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