stagit

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

highlight (1168B)


#!/usr/bin/env python3

from sys import stdin

import pygments
from markdown import markdown
from pygments import highlight
from pygments.formatters import HtmlFormatter
from pygments.lexers import TextLexer, guess_lexer, guess_lexer_for_filename

filename = stdin.readline().strip()
contents = stdin.read()
lexer = None
rendered = 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:
    lexer = TextLexer()

if lexer.__class__ is pygments.lexers.MarkdownLexer:
    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>")