#!/usr/bin/env python3
# vim: set fileencoding=utf8 :
"""
Highlight elan source file
"""
if __name__ == '__main__':
import sys, os, shutil
from pygments import highlight
from pygments.lexers import get_lexer_by_name
from pygments.formatters import HtmlFormatter
from jinja2 import Template
tpl = Template("""
{{ path }}
{{ path }}
Raw file
Back to index
{{ code|safe }}
""")
destdir = '_build'
f = sys.argv[1]
basedir = os.path.dirname (f)
basedestdir = os.path.join (destdir, basedir)
os.makedirs (basedestdir, exist_ok=True)
shutil.copy (f, os.path.join (destdir, f))
destf = os.path.join (destdir, f + '.html')
try:
with open (f, 'r') as srcfd:
code = srcfd.read ()
except UnicodeDecodeError as e:
# that’s expected for data files
print ('skipping', f, e)
sys.exit (0)
print (f)
lexer = get_lexer_by_name("elan", stripall=True)
formatter = HtmlFormatter (linenos=True, lineanchors='line', anchorlinenos=True)
with open (destf, 'w') as destfd:
tpl.stream(code=highlight(code, lexer, formatter), path=f, rawfile=os.path.basename (f), index=os.path.relpath ('.', os.path.dirname (f))).dump (destfd)