]> git.armaanb.net Git - stagit.git/blob - highlight
89cd98459dd0c9b691392f70d3678f84b7a438f1
[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     ])
35
36 FORMAT = HtmlFormatter(
37     style='murphy',
38     cssclass='highlight',
39     linenos='table',
40     lineanchors='loc',
41     anchorlinenos=True)
42
43 if rendered:
44     print('<article class="markup markdown">')
45     print(rendered)
46     print('</article>')
47 print(highlight(contents, lexer, FORMAT))
48 print('<style>')
49 print(FORMAT.get_style_defs(''))
50 print('</style>')
51
52 print("Filename: {}; Lexer: {}.".format(filename, lexer), file=stderr)
53 print("Markdown was rendered in addition.", file=stderr)