highlight-pulldown

Crates.iohighlight-pulldown
lib.rshighlight-pulldown
version0.2.2
sourcesrc
created_at2023-07-14 02:35:17.309242
updated_at2023-07-22 01:10:18.626024
descriptionProcess pulldown-cmark events to apply syntax highlighting to code blocks
homepagehttps://crates.io/crates/highlight-pulldown
repositoryhttps://gitlab.com/eguiraud/highlight-pulldown
max_upload_size
id915792
size59,385
Enrico Guiraud (eguiraud)

documentation

https://docs.rs/highlight-pulldown

README

pipeline status crates.io

Highlight Pulldown Code

A small library crate to apply syntax highlighting to markdown parsed with pulldown-cmark.

The implementation is based on the discussion at pulldown-cmark#167.

Usage

The crate exposes a single function, highlight. It takes an iterator over pulldown-cmark events and returns a corresponding Vec<pulldown_cmark::Event> where code blocks have been substituted by HTML blocks containing highlighted code.

use highlight_pulldown::highlight_with_theme;

let markdown = r#"
```rust
enum Hello {
    World,
    SyntaxHighlighting,
}
```"#;
let events = pulldown_cmark::Parser::new(markdown);

// apply a syntax highlighting pass to the pulldown_cmark events
let events = highlight_with_theme(events, "base16-ocean.dark").unwrap();

// emit HTML or further process the events as usual
let mut html = String::new();
pulldown_cmark::html::push_html(&mut html, events.into_iter());

For better efficiency, instead of invoking highlight or highlight_with_theme in a hot loop consider creating a PulldownHighlighter object once and use it many times.

Contributing

If you happen to use this package, any feedback is more than welcome.

Contributions in the form of issues or patches via the GitLab repo are even more appreciated.

Commit count: 14

cargo fmt