#!/usr/bin/env python3 """Render cgit source blobs as syntax-highlighted, HTML-escaped markup.""" import io import sys from pygments import highlight from pygments.formatters import HtmlFormatter from pygments.lexers import TextLexer, guess_lexer, guess_lexer_for_filename from pygments.util import ClassNotFound sys.stdin = io.TextIOWrapper(sys.stdin.buffer, encoding="utf-8", errors="replace") sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace") source = sys.stdin.read() filename = sys.argv[1] formatter = HtmlFormatter(style="monokai", nobackground=True) try: lexer = guess_lexer_for_filename(filename, source) except (ClassNotFound, TypeError): if source.startswith("#!"): try: lexer = guess_lexer(source) except ClassNotFound: lexer = TextLexer() else: lexer = TextLexer() sys.stdout.write("") sys.stdout.write(highlight(source, lexer, formatter))