3个版本 (破坏性)

0.4.0 2024年7月19日
0.3.0 2024年4月15日
0.2.1 2024年4月11日

#680 in 文本处理

Download history 132/week @ 2024-04-15 4/week @ 2024-05-06 4/week @ 2024-06-03 2/week @ 2024-07-01 102/week @ 2024-07-15 10/week @ 2024-07-22 10/week @ 2024-07-29

每月下载 124次

GPL-3.0-or-later

57KB
978

DMOS - Djot Much Output Schnutification

Crates.io builds.sr.ht status Documentation

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