Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rolandshoemaker/CommonMark-py
Depreciated in favor of rtfd/CommonMark-py
https://github.com/rolandshoemaker/CommonMark-py
Last synced: 3 months ago
JSON representation
Depreciated in favor of rtfd/CommonMark-py
- Host: GitHub
- URL: https://github.com/rolandshoemaker/CommonMark-py
- Owner: rolandshoemaker
- License: other
- Created: 2014-09-14T06:34:19.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2021-09-03T22:09:50.000Z (about 3 years ago)
- Last Synced: 2024-04-11T23:54:30.930Z (7 months ago)
- Language: Python
- Homepage:
- Size: 417 KB
- Stars: 126
- Watchers: 7
- Forks: 12
- Open Issues: 17
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- starred-awesome - CommonMark-py - Depreciated in favor of rtfd/CommonMark-py (Python)
README
CommonMark-py
=============**NOTE:** This repo is no longer maintained and most likely contains numerous bugs, for the up to date and safe version you want [`rtfd/CommonMark-py`](https://github.com/rtfd/CommonMark-py).
Pure Python port of [jgm](https://github.com/jgm)'s [stmd.js](https://github.com/jgm/stmd/blob/master/js/stmd.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 `stmd.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 `stmd.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, PyPy, and PyPy3).
**Current version:** 0.5.4
[![Build Status](https://travis-ci.org/rolandshoemaker/CommonMark-py.svg?branch=master)](https://travis-ci.org/rolandshoemaker/CommonMark-py)
Installation
------------rolands@kamaji:~$ pip install commonmark
Usage
-----import CommonMark
parser = CommonMark.DocParser()
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) #Hello World
----- 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 stdinoptional 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 [stmd.js](https://github.com/jgm/stmd/blob/master/js/stmd.js) 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 embeded 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 inputing 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
parseroptional arguments:
-h, --help show this help message and exit
-t T Single test to run or comma seperated 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 categoryAuthors
-------
* [Bibek Kafle](https://github.com/kafle)
* [Roland Shoemaker](https://github.com/rolandshoemaker)