Markdownif implements bindings for pulldown-cmark using Rustler.
Why?
Most of the available libraries that I explored didn’t meet my needs in terms of speed with the exception of markdown. I also wanted to try Rustler and this use case is the perfect fit.
Features
- Fast: check out the benchmarks
- Safe: Markdownif defers the NIF execution to the dirty schedulers based on the input size and on measurements around the dirty scheduling overhead.
- Correct: pulldown-cmark complies 100% with the CommonMark spec
Source: https://github.com/saulecabrera/markdownif
17 Likes
Ooo, so much yes!
Do you support the cmark flags for additional functionality that go beyond the base spec? Not looked at the API yet but plan to use this soon to replace a somewhat custom built thing. 
Do you support the cmark flags for additional functionality that go beyond the base spec?
@OvermindDL1 Do you mean support for task lists, tables, strikethrough, and footnotes? If that’s the case, those options are indeed supported, when parsing an input you can specify which of these you need, for example:
Markdownif.to_html(input, %Markdownif.Features{tables: true})
2 Likes
Yep that’s what I meant, awesome thanks!
1 Like
Cool! I’ve been thinking of creating a library like this, but with a bonus feature of directly emitting an html tree instead of a string (to avoid reparsing when postprocessing the markdown with HTML processors). I guess I’ll send a PR to this project instead when I come around to doing this 
1 Like
Oh yes, I’ll definitely need the HTML tree as well because I actually transform that to something that’s not HTML. ^.^;