Cmark 是 C语言实现的 Markdown 解析器,具有规范的 Markdown 语法,提供以下内容:
-
共享库 (
libcmark
),可以将 CommonMark 文档解析为抽象语法树 (AST)、操作 AST 并将文档呈现为 HTML、groff man、LaTeX、CommonMark 或 AST 的 XML 表示的函数。 -
C 程序(
cmark
):一个用于解析和输出 CommonMark 文档的命令行程序 。
优点
- 轻便:用标准 C99 编写,没有外部依赖,已经过 MSVC、gcc、tcc 和 clang 测试。
- 快:可以在眨眼间呈现 Markdown 版本的《War and Peace》(在 10 年前的笔记本电脑上为 127 毫秒,而眨眼为 100-400 毫秒),这个速度比原始 Markdown.pl 快 10000 倍。
- 准确:通过了所有 CommonMark 一致性测试。
- 标准化:Cmark 跟其他标准 CommonMark 库的工作方式是完全相同的,比如,你可以在客户端使用 commonmark.js 预览那些即将在服务器上使用 cmark 呈现的内容,不用担心内容格式有变化。
- 坚固:已使用 american fuzzy lop 进行了广泛的模糊测试 ,测试套件包括病态案例,这些案例曾经让其他 Markdown 解析器陷入困境。(例如,数千个深度嵌套的括号或引号)。
- 灵活:CommonMark 输入被解析为 AST,该 AST 可以在渲染之前以编程方式进行操作。
- 多种渲染器:支持 HTML、groff man、LaTeX、CommonMark 和自定义 XML 格式的输出,且很容易编写新的渲染器来支持其他格式。
- 自由:BSD-2 许可
libcmark
在 python、lua、ruby 和其他动态语言中也很容易使用。
安装
-
构建 C 程序(
cmark
)和共享库(libcmark
)需要 cmake,如果你要修改 scanners.re ,那还需要 0.14.2 以上版本的 re2c,用于从 scanner .re 生成 scanner .c ,事实上,存储库中已经包含了一个预生成的 scanner .c,以减少构建依赖。 -
如果有 GNU make,可以简单地
make
,make test
和make install