Marko: A markdown parser with high extensibility.¶
Marko is a markdown parser written in pure Python that complies CommonMark’s spec v0.30. It is designed to be highly extensible, see Extend Marko for details.
Marko requires Python 3.6 or higher.
Why Marko?¶
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.
Install and Use Marko¶
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
Other CLI usage:
usage: marko [-h] [-v] [-p PARSER] [-r RENDERER] [-e EXTENSTION] [-o OUTPUT]
[document]
positional arguments:
document The document to convert, will use stdin if not given.
optional arguments:
-h, --help show this help message and exit
-v, --version show program's version number and exit
-p PARSER, --parser PARSER
Specify another parser class
-r RENDERER, --renderer RENDERER
Specify another renderer class
-e EXTENSTION, --extension EXTENSTION
Specify the import name of extension, can be given
multiple times
-o OUTPUT, --output OUTPUT
Ouput to a file