#!/usr/bin/env python3 import pygments from pygments import highlight from pygments.formatters import HtmlFormatter from pygments.lexers import guess_lexer, guess_lexer_for_filename from sys import stdin, stderr filename = stdin.readline().strip() contents = stdin.read() lexer=None try: lexer = guess_lexer_for_filename(filename, contents) except pygments.util.ClassNotFound: try: lexer = guess_lexer(contents) except pygments.util.ClassNotFound: pass if lexer is None: from pygments.lexers import TextLexer lexer = TextLexer() rendered = None if lexer.__class__ is pygments.lexers.MarkdownLexer: from markdown import markdown rendered = markdown(contents, extensions=[ 'codehilite', 'extra', 'sane_lists', 'smarty', 'pymdownx.tasklist' ]) FORMAT = HtmlFormatter( style='murphy', cssclass='highlight', linenos='table', lineanchors='loc', anchorlinenos=True) if rendered: print('
') print(rendered) print('
') print('
') print(highlight(contents, lexer, FORMAT)) print('
') print('') print("Filename: {}; Lexer: {}.".format(filename, lexer), file=stderr) if rendered: print("Markdown was rendered in addition.", file=stderr)