📚 DOCS: Document renderer constructor differences (#421) Document that `MarkdownIt` passes itself to `renderer_cls`, unlike the argument-free JavaScript renderer constructor. Clarify the custom constructor contract and that `RendererHTML` accepts but ignores an optional parser argument. Closes #127. Validation: 981 tests passed; all pre-commit checks passed; strict docs build passed on Python 3.10 with Sphinx 8.1.3. Sphinx 9 fails in the unchanged API-doc configuration on both upstream and this branch. Co-authored-by: jf nz <talon_usable_9k@icloud.com> GitOrigin-RevId: 0198992a9cd3f292ba586cb1a48fbdbee69d32ac Change-Id: Ib3af06792760ed94ad242fee0a13ed84a14ea10a
Markdown parser done right.
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!
pip install markdown-it-py[plugins]
or with extras
pip install markdown-it-py[linkify,plugins]
conda install -c conda-forge markdown-it-py
or with extras
conda install -c conda-forge markdown-it-py linkify-it-py mdit-py-plugins
Render markdown to HTML with markdown-it-py and a custom configuration with and without plugins and features:
from 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)
Render markdown to HTML with markdown-it-py from the command-line:
usage: 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
Big thanks to the authors of markdown-it:
Also John MacFarlane for his work on the CommonMark spec and reference implementations.