#!/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('<article class="markup markdown">')
print(rendered)
print('</article>')
print('<div id="blob">')
print(highlight(contents, lexer, FORMAT))
print('</div>')
print('<style>')
print(FORMAT.get_style_defs(''))
print('</style>')
print("Filename: {}; Lexer: {}.".format(filename, lexer), file=stderr)
if rendered:
print("Markdown was rendered in addition.", file=stderr)