12 个版本

0.5.1 2024年7月12日
0.5.0 2024年7月12日
0.4.1 2022年12月11日
0.3.1 2022年6月6日
0.1.2 2021年12月14日

#1793 in 解析器实现

Download history 3/week @ 2024-04-23 8/week @ 2024-06-11 4/week @ 2024-07-02 164/week @ 2024-07-09 14/week @ 2024-07-16 5/week @ 2024-07-23 50/week @ 2024-07-30

77 每月下载量
2 个crate中使用(通过blades

GPL-3.0-or-later

21KB
413

cmark 语法高亮

Crates.io status Docs

此crate提供了一个用于 pulldown_cmark 事件的预处理程序,该程序实现了语法高亮。它是基于Maciej Hirsz为Ramhorns模板引擎的工作。

支持的语言

  • Rust
  • JavaScript
  • sh shell
  • TOML

定义语言语法的文件位于 src/languages 目录中。语法使用正则表达式定义,Logos过程宏将它们在编译时转换为词法分析器。欢迎为实现新语言提交PR!

功能

启用 latex2mathml 功能后,用 math 标记的包含LaTeX公式的块将以块模式渲染为 MathML,并且对于以 $ 开头和结尾的行内代码,将以类似方式行内模式渲染。

使用

此预处理程序可以用作 Ramhorns 模板引擎的回调。

use ramhorns::encoding::Encoder;

pub fn encode<E: Encoder>(source: &str, encoder: &mut E) -> Result<(), E::Error> {
    let parser = pulldown_cmark::Parser::new(source);
    let processed = cmark_syntax::SyntaxPreprocessor::new(parser);
    encoder.write_html(processed)
}

输出的HTML由以下类名的span标签组成:glyphliteralidentifierspecial-identifierstrong-identifierkeywordcomment

依赖项

~3MB
~25K SLoC