Markdown it py
Markdown parser, done right. 100% CommonMark support, extensions, syntax plugins & high speed. Now in Python!
[![Github-CI][github-ci]][github-link] [![Coverage Status][codecov-badge]][codecov-link] [![PyPI][pypi-badge]][pypi-link] [![Conda][conda-badge]][conda-link] [![PyPI - Downloads][install-badge]][install-link] The project is written primarily in Python, distributed under the MIT License license, first published in 2020. It has gained significant community traction with 1,326 stars and 106 forks on GitHub. Key topics include: markdown, markdown-it, markdown-parser.
markdown-it-py
<p align="center"> <img alt="markdown-it-py icon" src="https://raw.githubusercontent.com/executablebooks/markdown-it-py/master/docs/_static/markdown-it-py.svg"> </p>Markdown parser done right.
- Follows the CommonMark spec for baseline parsing
- Configurable syntax: you can add new rules and even replace existing ones.
- Pluggable: Adds syntax extensions to extend the parser (see the plugin list).
- High speed (see our benchmarking tests)
- Easy to configure for security
- Member of Google's Assured Open Source Software
This is a Python port of markdown-it, and some of its associated plugins.
For more details see: https://markdown-it-py.readthedocs.io.
For details on markdown-it itself, see:
See also: markdown-it-pyrs for an experimental Rust binding,
for even more speed!
Installation
PIP
bashpip install markdown-it-py[plugins]
or with extras
bashpip install markdown-it-py[linkify,plugins]
Conda
bashconda install -c conda-forge markdown-it-py
or with extras
bashconda install -c conda-forge markdown-it-py linkify-it-py mdit-py-plugins
Usage
Python API Usage
Render markdown to HTML with markdown-it-py and a custom configuration
with and without plugins and features:
pythonfrom markdown_it import MarkdownIt from mdit_py_plugins.front_matter import front_matter_plugin from mdit_py_plugins.footnote import footnote_plugin md = ( MarkdownIt('commonmark', {'breaks':True,'html':True}) .use(front_matter_plugin) .use(footnote_plugin) .enable('table') ) text = (""" --- a: 1 --- a | b - | - 1 | 2 A footnote [^1] [^1]: some details """) tokens = md.parse(text) html_text = md.render(text) ## To export the html to a file, uncomment the lines below: # from pathlib import Path # Path("output.html").write_text(html_text)
Command-line Usage
Render markdown to HTML with markdown-it-py from the
command-line:
consoleusage: markdown-it [-h] [-v] [--stdin|filenames [filenames ...]] Parse one or more markdown files, convert each to HTML, and print to stdout positional arguments: --stdin read source Markdown file from standard input filenames specify an optional list of files to convert optional arguments: -h, --help show this help message and exit -v, --version show program's version number and exit Interactive: $ markdown-it markdown-it-py [version 0.0.0] (interactive) Type Ctrl-D to complete input, or Ctrl-C to exit. >>> # Example ... > markdown *input* ... <h1>Example</h1> <blockquote> <p>markdown <em>input</em></p> </blockquote> Batch: $ markdown-it README.md README.footer.md > index.html
References / Thanks
Big thanks to the authors of markdown-it:
- Alex Kocharin github/rlidwka
- Vitaly Puzrin github/puzrin
Also John MacFarlane for his work on the CommonMark spec and reference implementations.
Contributors
Showing top 12 contributors by commit count.
