9 releases (5 breaking)
0.6.1 | Jul 7, 2024 |
---|---|
0.6.0 | Aug 3, 2023 |
0.5.1 | Jul 5, 2023 |
0.5.0 | May 13, 2023 |
0.1.1 | Jul 21, 2022 |
#201 in Parser implementations
1,670 downloads per month
Used in 26 crates
(17 directly)
270KB
5.5K
SLoC
markdown-it
Rust port of popular markdown-it.js library.
TL;DR:
- if you want to get result fast, use pulldown-cmark
- if you want to render GFM exactly like github, use comrak
- if you want to define your own syntax (like
@mentions
,:emoji:
, custom html classes), use this library
You can check a demo in your browser (it's Rust compiled into WASM).
Features
- 100% CommonMark compatibility
- AST
- Source maps (full support, not just on block tags like cmark)
- Ability to write your own syntax of arbitrary complexity
- to prove this point, CommonMark syntax itself is written as a plugin
Usage
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>"
For a guide on how to extend it, see examples
folder.
Notes
This is an attempt at making a language-agnostic parser. You can probably parse AsciiDoc, reStructuredText or any other plain text format with this without too much effort. I might eventually write these as proof-of-concept.
Dependencies
~7–16MB
~219K SLoC