A markdown parser with high extensibility.
Marko requires Python2.7, Python 3.5 or higher.
Among all implementations of Python's markdown parser, it is a common issue that user can't easily extend it to add his own features. Furthermore, Python-Markdown and mistune don't comply CommonMark's spec. It is a good reason for me to develop a new markdown parser.
Respecting that Marko complies CommonMark's spec at the same time, which is a super complicated spec, Marko's performance will be affected. However, using a parser which doesn't comply the CommonMark spec may give you unexpected rendered results from time to time. A benchmark result shows that Marko is 3 times slower than Python-Markdown, but a bit faster than Commonmark-py, much slower than mistune. If performance is a bigger concern to you than spec compliance, you'd better choose another parser.
The installation is very simple:
$ pip install marko
And to use it:
import marko print(marko.convert(text))
Marko also provides a simple CLI, for example, to render a document and output to a html file:
$ cat my_article.md | marko > my_article.html
It is super easy to use an extension:
from marko import Markdown from marko.ext.footnote import FootnoteExtension # Add footnote extension markdown = Markdown(extensions=[FootnoteExtension]) # Alternatively you can register an extension later markdown.use(FootnoteExtension)
Marko is shipped with 3 extensions:
marko.ext.pangu.PanguExtension. They are not included in CommonMark's spec but are common in other markdown parsers.
Marko also provides a Github flavored markdown parser which can be found at
Please refer to Extend Marko about how to write your own extension.
Marko is released under MIT License