cmark-syntax 0.1.0

Syntax highlighting for pulldown-cmark
Documentation

cmark syntax highlighting

Crates.io status Docs

This crate provides a preprocessor for pulldown_cmark events that implements syntax highlighting. It is based on the work of Maciej Hirsz for the Ramhorns templating engine.

Supported languages

  • Rust
  • JavaScript
  • TOML

Files defining language syntax are located in src/languages directory. The syntax is defined using regexes, which the Logos procedural macro turns into a parser on compile time. PRs implementing new languages are very welcome!

Use

This preprocessor can be used as a callback for the Ramhorns templating engine.

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)
}