9 个版本 (5 个重大变更)

0.6.1 2024年7月7日
0.6.0 2023年8月3日
0.5.1 2023年7月5日
0.5.0 2023年5月13日
0.1.1 2022年7月21日

495解析器实现

Download history 329/week @ 2024-05-02 271/week @ 2024-05-09 246/week @ 2024-05-16 524/week @ 2024-05-23 424/week @ 2024-05-30 400/week @ 2024-06-06 339/week @ 2024-06-13 284/week @ 2024-06-20 217/week @ 2024-06-27 322/week @ 2024-07-04 224/week @ 2024-07-11 301/week @ 2024-07-18 349/week @ 2024-07-25 364/week @ 2024-08-01 289/week @ 2024-08-08 188/week @ 2024-08-15

1,216 每月下载量
用于 21 个 crate (12 个直接使用)

MIT 许可证

270KB
5.5K SLoC

markdown-it

web demo github docs.rs crates.io coverage

Rust 版本的流行的 markdown-it.js 库。

TL;DR

  • 如果你想要快速得到结果,使用 pulldown-cmark
  • 如果你想要像 GitHub 一样渲染 GFM,使用 comrak
  • 如果你想要定义自己的语法(如 @提及:emoji:,自定义 HTML 类),使用这个库

你可以在浏览器中查看一个 演示(这是 Rust 编译成 WASM)。

特性

  • 100% CommonMark 兼容性
  • AST
  • 源映射(全面支持,不仅仅是块标签如 cmark)
  • 能够编写任意复杂性的自定义语法
    • 为了证明这一点,CommonMark 语法本身也是作为一个插件编写的

用法

let parser = &mut markdown_it::MarkdownIt::new();
markdown_it::plugins::cmark::add(parser);
markdown_it::plugins::extra::add(parser);

let ast  = parser.parse("Hello **world**!");
let html = ast.render();

print!("{html}");
// prints "<p>Hello <strong>world</strong>!</p>"

有关如何扩展它的指南,请参阅 examples 目录。

注意

这是一个尝试制作一个语言无关的解析器。你可能会费点劲用这个解析 AsciiDoc、reStructuredText 或 任何其他 纯文本格式。我可能会最终将这些作为概念证明。

依赖

~7–16MB
~222K SLoC