Skip to main content

Python parser for the CommonMark Markdown spec

Project description

CommonMark-py
=============
Pure Python port of [jgm](https://github.com/jgm)'s [commonmark.js](https://github.com/jgm/commonmark.js), a Markdown parser and renderer for the [CommonMark](http://commonmark.org) specification, using only native modules. Once both this project and the CommonMark specification are stable we will release the first `1.0` version and attempt to keep up to date with changes in `commonmark.js`.

We are currently at the same development stage (actually a bit ahead because we have implemented HTML entity conversion and href URL escaping) as `commonmark.js`. Since Python versions pre-3.4 use outdated (i.e. not HTML5 spec) entity conversion, I've converted the 3.4 implementation into a single file, `entitytrans.py` which so far seems to work (all tests pass on 2.7, 3.3, 3.4, 3.5).

**Current version:** 0.6.1

[![Build Status](https://travis-ci.org/rtfd/CommonMark-py.svg?branch=master)](https://travis-ci.org/rtfd/CommonMark-py)

Installation
------------

rolands@kamaji:~$ pip install commonmark

Usage
-----

import CommonMark
parser = CommonMark.Parser()
renderer = CommonMark.HtmlRenderer()
ast = parser.parse("Hello *World*")
html = renderer.render(ast)
json = CommonMark.ASTtoJSON(ast)
CommonMark.dumpAST(ast) # pretty print generated AST structure
print(html) # <p>Hello <em>World</em><p/>

----- or -----

rolands@kamaji:~$ cmark.py README.md -o README.html
rolands@kamaji:~$ cmark.py README.md -o README.json -aj # output AST as JSON
rolands@kamaji:~$ cmark.py README.md -a # pretty print generated AST structure
rolands@kamaji:~$ cmark.py -h
usage: cmark.py [-h] [-o [O]] [-a] [-aj] [infile]

Process Markdown according to the CommonMark specification.

positional arguments:
infile Input Markdown file to parse, defaults to stdin

optional arguments:
-h, --help show this help message and exit
-o [O] Output HTML/JSON file, defaults to stdout
-a Print formatted AST
-aj Output JSON AST

Contributing
------------

If you would like to offer suggestions/optimizations/bugfixes through pull requests please do! Also if you find an error in the parser/renderer that isn't caught by the current test suite please open a new issue and I would also suggest you send the [CommonMark](https://github.com/jgm/CommonMark) project a pull request adding your test to the existing test suite.

Tests
-----

The tests script, `CommonMark-tests.py`, is pretty much a devtool. As well as running all the tests embedded in `spec.txt` it also allows you to run specific tests using the `-t` argument, provide information about passed tests with `-p`, percentage passed by category of test with `-s`, and enter markdown interactively with `-i` (In interactive mode end a block by inputting a line with just `end`, to quit do the same but with `quit`). `-d` can be used to print call tracing.

rolands@kamaji:~/utils/CommonMark-py$ python CommonMark-tests.py -h
usage: CommonMark-tests.py [-h] [-t T] [-p] [-f] [-i] [-d] [-np] [-s]

script to run the CommonMark specification tests against the CommonMark.py
parser

optional arguments:
-h, --help show this help message and exit
-t T Single test to run or comma separated list of tests (-t 10 or -t 10,11,12,13)
-p Print passed test information
-f Print failed tests (during -np...)
-i Interactive Markdown input mode
-d Debug, trace calls
-np Only print section header, tick, or cross
-s Print percent of tests passed by category

Authors
-------
* [Bibek Kafle](https://github.com/kafle)
* [Roland Shoemaker](https://github.com/rolandshoemaker)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

CommonMark-0.6.1.tar.gz (82.4 kB view details)

Uploaded Source

Built Distribution

CommonMark-0.6.1-py2.py3-none-any.whl (38.2 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file CommonMark-0.6.1.tar.gz.

File metadata

  • Download URL: CommonMark-0.6.1.tar.gz
  • Upload date:
  • Size: 82.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for CommonMark-0.6.1.tar.gz
Algorithm Hash digest
SHA256 f70e325ba5cc8d37bffbf74212a06aa14a2c8f5781af849672850221e4a382d3
MD5 bdd1b86619423f57824f7278f7017d64
BLAKE2b-256 39b3269d7db3e5806ed353b62f38598ee6c8b93cac69c1d02f320b96b8c9e6bf

See more details on using hashes here.

File details

Details for the file CommonMark-0.6.1-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for CommonMark-0.6.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 8e91abc0f08dd096eb74306095988e6576a595ec03d46255056da5cf3f119aa3
MD5 d4dd8c30ed36d595fcfa587459b9c021
BLAKE2b-256 56f91c99a3e2550eefaf6e6f87d7348055de1fa6d7e001e019fe4e0fb667101d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page