Passed
Push — master ( ec62d3...86008f )
by Dongxin
42s
created

main()   B

Complexity

Conditions 6

Size

Total Lines 42

Duplication

Lines 0
Ratio 0 %

Importance

Changes 3
Bugs 0 Features 0
Metric Value
cc 6
c 3
b 0
f 0
dl 0
loc 42
rs 7.5384
1
#!/usr/bin/env python
2
from __future__ import unicode_literals
3
import argparse
4
import sys
5
import CommonMark
6
7
8
def main():
9
    parser = argparse.ArgumentParser(
10
        description="Process Markdown according to "
11
        "the CommonMark specification.")
12
    if sys.version_info < (3, 0):
13
        reload(sys)  # noqa
14
        sys.setdefaultencoding('utf-8')
15
    parser.add_argument(
16
        'infile',
17
        nargs="?",
18
        type=argparse.FileType('r'),
19
        default=sys.stdin,
20
        help="Input Markdown file to parse, defaults to STDIN")
21
    parser.add_argument(
22
        '-o',
23
        nargs="?",
24
        type=argparse.FileType('w'),
25
        default=sys.stdout,
26
        help="Output HTML/JSON file, defaults to STDOUT")
27
    parser.add_argument('-a', action="store_true", help="Print formatted AST")
28
    parser.add_argument('-aj', action="store_true", help="Output JSON AST")
29
    args = parser.parse_args()
30
    parser = CommonMark.Parser()
31
    f = args.infile
32
    o = args.o
33
    lines = []
34
    for line in f:
35
        lines.append(line)
36
    data = "".join(lines)
37
    ast = parser.parse(data)
38
    if not args.a and not args.aj:
39
        renderer = CommonMark.HtmlRenderer()
40
        o.write(renderer.render(ast))
41
        exit()
42
    if args.a:
43
        # print ast
44
        CommonMark.dumpAST(ast)
45
        exit()
46
47
    # o.write(ast.to_JSON())
48
    o.write(CommonMark.dumpJSON(ast))
49
    exit()
50
51
52
if __name__ == '__main__':
53
    main()
54