cmark: Fast, accurate CommonMark (Markdown) parser and renderer
This package provides Haskell bindings for libcmark, the reference parser for CommonMark, a fully specified variant of Markdown. It includes sources for libcmark (version 0.18.1) and does not require prior installation of the C library.
cmark provides the following advantages over existing Markdown libraries for Haskell:
Speed: Conversion speed is on par with the sundown library. We were unable to measure precisely against sundown, which raised a malloc error when compiled into our benchmark suite. Relative to other implementations: cmark was 82 times faster than cheapskate, 59 times faster than markdown, 105 times faster than pandoc, and 2.8 times faster than discount.
Robustness: cmark can handle whatever is thrown at it, without the exponential blowups in parsing time one can sometimes get with other libraries. (The input
bench/full-sample.md, for example, causes both pandoc and markdown to grind to a halt.)
Accuracy: cmark passes the CommonMark spec's suite of over 500 conformance tests.
Standardization: Since there is a spec and a comprehensive suite of tests, we can have a high degree of confidence that any two CommonMark implementations will behave the same. Thus, for example, one could use this library for server-side rendering and commonmark.js for client-side previewing.
Ease of installation: cmark is portable and has minimal dependencies.
cmark does not provide Haskell versions of the whole
libcmark API, which is
built around mutable
cmark_node objects. Instead, it
provides functions for converting CommonMark to HTML
(and other formats), and a function for converting
CommonMark to a
Node tree that can be processed
further using Haskell.
A note on security: This library does not attempt to sanitize HTML output. We recommend using xss-sanitize to filter the output.
A note on stability: There is a good chance the API will change significantly after this early release.
[Skip to Readme]
|Versions [faq]||0.1.0.0, 0.1.0.1, 0.2, 0.2.0.1, 0.2.0.2, 0.3, 0.3.0.1, 0.3.1, 0.3.2, 0.3.3, 0.3.3.1, 0.3.4, 0.3.5, 0.4.0.1, 0.4.1, 0.5.0, 0.5.1, 0.5.2, 0.5.2.1, 0.5.3, 0.5.3.1, 0.5.4, 0.5.5, 0.5.5.1, 0.5.6, 0.5.6.1, 0.5.6.3, 0.6 (info)|
|Dependencies||base (>=4.5 && <4.8), ghc-prim (>=0.2), mtl, syb, text (>=1.1 && <1.3) [details]|
|Copyright||(C) 2015 John MacFarlane|
|Revised||Revision 3 made by JohnMacFarlane at 2015-03-16T19:27:32Z|
|Source repo||head: git clone git://github.com/jgm/cmark-hs.git|
|Uploaded||by JohnMacFarlane at 2015-03-16T18:24:59Z|
|Distributions||Debian:0.5.6, Fedora:0.6, FreeBSD:0.4.0.1, LTSHaskell:0.5.6.3, NixOS:0.6, Stackage:0.6|
|Downloads||34983 total (171 in the last 30 days)|
|Rating||2.25 (votes: 2) [estimated by Bayesian average]|
Docs available [build log]
Last success reported on 2015-03-16 [all 1 reports]
Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.
For package maintainers and hackage trustees