paka.cmark
is a Python library that wraps subset of cmark C library
(that is one of reference implementations of CommonMark).
- Python 2.7 and 3.6 are supported
- PyPy (Python 2.7) is supported, as wrapping is made with CFFI
- no need to install
libcmark
, it is bundled withpaka.cmark
(and sources of the former are regularly updated according to upstream) - supported output: HTML, XML, CommonMark, man, LaTeX
- supported options:
CMARK_OPT_UNSAFE
,CMARK_OPT_NOBREAKS
,CMARK_OPT_HARDBREAKS
,CMARK_OPT_SOURCEPOS
,CMARK_OPT_SMART
- unlike
libcmark
—underlying C library—paka.cmark
usesCMARK_OPT_NOBREAKS
by default (breaks
argument allows to control line break rendering) - safe HTML output is on by default (like in
libcmark
)
>>> from paka import cmark
Render with CMARK_OPT_DEFAULT | CMARK_OPT_NOBREAKS
:
>>> print(cmark.to_html(u"<p>nope</p>"))
<!-- raw HTML omitted -->
Render with CMARK_OPT_DEFAULT | CMARK_OPT_NOBREAKS | CMARK_OPT_UNSAFE
:
>>> print(cmark.to_html(u"Hello,\n*World*!", safe=False))
<p>Hello, <em>World</em>!</p>
Render with CMARK_OPT_DEFAULT
:
>>> print(cmark.to_html(u"Hello,\n*World*!", breaks=True))
<p>Hello,
<em>World</em>!</p>
Render with CMARK_OPT_DEFAULT | CMARK_OPT_HARDBREAKS
:
>>> print(cmark.to_html(u"Hello,\n*World*!", breaks="hard"))
<p>Hello,<br />
<em>World</em>!</p>
Render CommonMark with CMARK_OPT_DEFAULT | CMARK_OPT_NOBREAKS
:
>>> print(cmark.to_commonmark(u"_Hello_"))
*Hello*
Library is available on PyPI,
you can use pip
for installation:
$ pip install paka.cmark
Build HTML docs:
$ tox -e docs
View built docs:
$ sensible-browser .tox/docs/tmp/docs_html/index.html
$ tox
Collect info:
$ tox -e coverage
View HTML report:
$ sensible-browser .tox/coverage/tmp/cov_html/index.html
Run code checkers:
$ tox -e checks