aboutsummaryrefslogtreecommitdiff
path: root/responsive/syntax-material.py
blob: 317669108d386897405e70d63e25b97c46f25e13 (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
import sys

from pygments import highlight
from pygments.formatters import HtmlFormatter
from pygments.lexers import get_lexer_for_filename, guess_lexer
from pygments.util import ClassNotFound


def main():
    filename = sys.argv[-1] if len(sys.argv) > 1 else "stdin"

    try:
        data = sys.stdin.read()
    except Exception:
        return

    try:
        lexer = get_lexer_for_filename(filename)
    except ClassNotFound:
        try:
            lexer = guess_lexer(data)
        except ClassNotFound:
            sys.stdout.write(f"<pre>{data}</pre>")
            return

    formatter = HtmlFormatter(style="default", nowrap=True, classprefix="hl-")

    try:
        sys.stdout.write("<style>.hl- { display: inline; }</style>")
        highlight(data, lexer, formatter, sys.stdout)
    except BrokenPipeError:
        pass


if __name__ == "__main__":
    main()