blob: ee678f812a3a65a638fdd64ea8ef7e71d0e18de8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
#!/usr/bin/env python3
"""
From: https://github.com/DoomHammer/pandocfilter-pygments
Requires:
- pygments
- pandocfilters
"""
from pandocfilters import toJSONFilter, RawBlock
from pygments import highlight
from pygments.lexers import (get_lexer_by_name, guess_lexer, TextLexer)
from pygments.formatters import get_formatter_by_name
def pygmentize(key, value, format, meta):
if key == 'CodeBlock':
[[ident, classes, keyvals], code] = value
lexer = None
for klass in classes:
try:
lexer = get_lexer_by_name(klass)
break
except:
pass
if lexer is None:
try:
lexer = guess_lexer(code)
except:
lexer = TextLexer()
if format == "html5":
format = "html"
return [RawBlock(format, highlight(code, lexer, get_formatter_by_name(format)))]
if __name__ == "__main__":
toJSONFilter(pygmentize)
|