.. Marko documentation master file, created by
sphinx-quickstart on Thu Aug 16 19:04:07 2018.
You can adapt this file completely to your liking, but it should at least
contain the root `toctree` directive.
Marko: A markdown parser with high extensibility.
=================================================
.. image:: https://github.com/frostming/marko/workflows/Tests/badge.svg
:target: https://github.com/frostming/marko/workflows/Tests
.. image:: https://img.shields.io/pypi/v/marko.svg
:target: https://pypi.org/project/marko/
.. image:: https://img.shields.io/pypi/pyversions/marko.svg
:target: https://pypi.org/project/marko/
.. image:: https://img.shields.io/badge/CommonMark-0.30-blue.svg
:target: https://spec.commonmark.org/0.30/
Marko is a pure Python markdown parser that adheres to the specifications of `CommonMark's spec v0.30 `_.
It has been designed with high extensibility in mind, as detailed in the :doc:`Extend Marko ` section.
Marko requires Python 3.7 or higher.
Why Marko?
----------
Of all the Python markdown parsers available, a common issue is the difficulty for users to add their own features.
Additionally, both `Python-Markdown`_ and `mistune`_ do not comply with CommonMark specifications.
This has prompted me to develop a new markdown parser.
Marko's compliance with the complex CommonMark specification can impact its performance.
However, using a parser that does not adhere to this spec may result in unexpected rendering outcomes.
According to benchmark results, Marko is three times slower than Python-Markdown but slightly faster than Commonmark-py
and significantly slower than mistune. If prioritizing performance over spec compliance is crucial for you,
it would be best to opt for another parser.
.. _Python-Markdown: https://github.com/waylan/Python-Markdown
.. _mistune: https://github.com/lepture/mistune
.. _Commonmark-py: https://github.com/rtfd/CommonMark-py
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
Other Contents
--------------
.. toctree::
:maxdepth: 2
extend
extensions
api
Indices and tables
==================
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`