]> git.armaanb.net Git - stagit.git/blob - highlight
Better markup CSS.
[stagit.git] / highlight
1 #!/usr/bin/env python3
2
3 import pygments
4 from pygments import highlight
5 from pygments.formatters import HtmlFormatter
6 from pygments.lexers import guess_lexer, guess_lexer_for_filename
7
8 from sys import stdin, stderr
9
10 filename = stdin.readline().strip()
11 contents = stdin.read()
12
13 lexer=None
14
15 try:
16     lexer = guess_lexer_for_filename(filename, contents)
17 except pygments.util.ClassNotFound:
18     try:
19         lexer = guess_lexer(contents)
20     except pygments.util.ClassNotFound:
21         pass
22
23 if lexer is None:
24     from pygments.lexers import TextLexer
25     lexer = TextLexer()
26
27 rendered = None
28 if lexer.__class__ is pygments.lexers.MarkdownLexer:
29     from markdown import markdown
30     rendered = markdown(contents, extensions=[
31         'codehilite',
32         'extra',
33         'sane_lists',
34         'smarty'
35     ])
36
37 FORMAT = HtmlFormatter(
38     style='murphy',
39     cssclass='highlight',
40     linenos='table',
41     lineanchors='loc',
42     anchorlinenos=True)
43
44 if rendered:
45     print('<article class="markup markdown">')
46     print(rendered)
47     print('</article>')
48 print('<div id="blob">')
49 print(highlight(contents, lexer, FORMAT))
50 print('</div>')
51 print('<style>')
52 print(FORMAT.get_style_defs(''))
53 print('</style>')
54
55 print("Filename: {}; Lexer: {}.".format(filename, lexer), file=stderr)
56 if rendered:
57     print("Markdown was rendered in addition.", file=stderr)