3个版本 (破坏性)
0.4.0 | 2024年7月19日 |
---|---|
0.3.0 | 2024年4月15日 |
0.2.1 | 2024年4月11日 |
#680 in 文本处理
每月下载 124次
57KB
978 行
DMOS - Djot Much Output Schnutification
DMOS是一个djot HTML渲染器,具有一些高级功能。DMOS不是一个静态网站生成器!但是它的功能集设计得非常好,可以潜在地与一些脚本结合使用来构建一个::)
解析和渲染基本功能由jotdown处理。DMOS添加以下功能
语法高亮
DMOS将自动尝试为所有带有语言指定器的代码块添加基于CSS类的语法高亮。默认高亮器是syntect,这意味着它体积小、速度快,但也是基于行的(这对绝大多数代码片段来说不是问题)。
对于喜欢冒险的人,还有一个基于inkjet/tree-sitter的替代高亮器,它是相当复杂的,但可执行文件的大小会非常大(请参阅它们的README文件)。
目录内容
DMOS可以生成文档的目录内容。目录的序言和结语是可定制的,这意味着它可以嵌入到文档中的任意元素中(如<section>
、<div>
、<details>
等)。
还有一个选项可以排除文档标题从目录中。如果启用,DMOS将同时在标题之后发出目录(提供一个更自然的文档结构:标题、目录、内容)。
章节锚点
DMOS可以为标题添加指向自身的部分锚点。这些锚点是一种常见的技巧,允许读者轻松获取到特定部分的链接。它们通常使用CSS样式,仅在鼠标悬停时才显示。如果您在sr.ht(https://git.sr.ht/~bitfehler/dmos)上查看此文档的HTML渲染,可以通过将鼠标悬停在任何部分标题上查看类似的机制。
标题提取
DMOS可以仅渲染文档的标题。例如,在生成完整HTML页面时,将文档的标题写入<title>
元素非常有用。通常,文档的标题被认为是其第一个顶级标题,但可以通过提供特殊的dmos:title
元数据属性来覆盖(见下文)。
与之相关的是,DMOS可以渲染没有标题的文档。如果您想以特殊方式渲染标题然后再单独渲染文档主体,这会很有用。
元数据
DMOS将任何以dmos:
开头的djot键值属性视为元数据。这些属性在常规文档渲染期间会被删除,但可以单独输出,从而使元数据可用于不了解djot的工具。虽然这些属性可以出现在文档的任何位置,但按照惯例,它们应该附加到第一个标题上。
例如,给定以下文档
{dmos:title="My title"}
{dmos:author="Conrad Hoffmann"}
# My title, but maybe longer
Lorem ipsum...
元数据可以以shell语法渲染,可以写入文件,然后由任何POSIX兼容的shell读取
dmos_title=My\ title
dmos_author=Conrad\ Hoffmann
或者它可以以JSON格式渲染
{
"dmos_title": "My title",
"dmos_author": "Conrad Hoffmann"
}
表情符号
虽然djot文档中使用表情符号没有任何限制,但该语言确实有符号的概念。它使用由Github和其他人推广的:<NAME>:
语法,例如:+1:
表示👍。DMOS处理这些符号,并在找到相应的表情符号时将其替换。可用的名称基于gemoji定义。DMOS还增加了基本肤色支持(例如:+1::skin-tone-5:
)。
用法
dmos包是一个库,dmos-cli是该库的简单CLI包装。
有关库的用法,请参阅crate文档。
有关CLI的用法
Usage: dmos [OPTIONS] [FILE]
Arguments:
[FILE] Read input from FILE instead of stdin
Options:
-a, --anchor <ANCHOR> Add anchors with text ANCHOR to headings
--no-sym Disable symbols processing
-t, --title-only Output first first-level heading and exit
--toc Generate document with table of contents
-T, --toc-only Output table of contents and exit
--toc-skip-title Skip title (first heading) in table of contents
--toc-prologue <HTML> Prologue to the table of content listing [default: "<section class=\"toc\"><h3>Table of Contents</h3>"]
--toc-epilogue <HTML> Epilogue to the table of content listing [default: </section>]
-m, --meta <FMT> Output metadata attributes in given format and exit [possible values: sh, json]
-h, --help Print help
-V, --version Print version
联系
请随时将问题、补丁或其他反馈发送到我的公开邮箱。
依赖关系
~1–83MB
~2.5M SLoC