3个版本 (破坏性更新)

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

#236 in 文本处理

Download history 1/week @ 2024-05-01 5/week @ 2024-05-08 3/week @ 2024-05-22 2/week @ 2024-05-29 4/week @ 2024-06-05 5/week @ 2024-07-03 106/week @ 2024-07-17 20/week @ 2024-07-24 12/week @ 2024-07-31

每月138次下载
dmos-cli 中使用

GPL-3.0-or-later

44KB
839

DMOS - Djot Much Output Schnutification

Crates.io builds.sr.ht status Documentation

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