3个版本 (破坏性更新)
0.4.0 | 2024年7月19日 |
---|---|
0.3.0 | 2024年4月15日 |
0.2.1 | 2024年4月11日 |
#236 in 文本处理
每月138次下载
在 dmos-cli 中使用
44KB
839 行
DMOS - Djot Much Output Schnutification
DMOS是一个具有一些高级功能的djot HTML渲染器。DMOS不是一个静态站点生成器!但是它的功能集设计得可以与大量脚本结合使用:
解析和渲染的基本操作由jotdown处理。DMOS添加了以下功能
语法高亮
DMOS将自动尝试为所有具有语言指定器的代码块添加基于CSS类的语法高亮。默认高亮器是syntect,这意味着它体积小、速度快,但也是基于行的(对于大多数代码片段来说这不是问题)。
对于喜欢冒险的人来说,还有一个基于inkjet/tree-sitter的替代高亮器。Tree-sitter非常复杂,但可执行文件的大小将非常大(请参阅他们的README)。
目录
DMOS可以为文档生成目录。目录的序言和跋是可定制的,这意味着它可以嵌入到文档中任意元素(例如<section>
、<div>
、<details>
等)。
还有一个选项可以排除文档标题从目录中。如果启用,DMOS还会在标题之后发出目录(提供更自然的文档结构:标题、目录、内容)。
部分锚点
DMOS可以为标题添加部分锚点,以便链接到自身。这些锚点是一种常见的技术,允许读者轻松获取特定部分的链接。它们通常使用CSS样式仅在悬停标题时出现。如果您在sr.ht上查看此文档的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 文档中可以使用表情符号,但该语言确实有符号的概念。[链接](https://htmlpreview.github.io/?https://github.com/jgm/djot/blob/master/doc/syntax.html#symbols)。它使用由 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
联系
请随时将问题、补丁或其他反馈发送到我的公开邮箱。
依赖项
~4–135MB
~4M SLoC