summaryrefslogtreecommitdiff
path: root/tools/highlight.py
diff options
context:
space:
mode:
authorLars-Dominik Braun <lars@6xq.net>2019-02-04 13:09:03 +0100
committerLars-Dominik Braun <lars@6xq.net>2019-02-04 13:09:03 +0100
commit04e68443040c7abad84d66477e98f93bed701760 (patch)
tree2b6202afae659e773bf6916157d23e83edfa44e3 /tools/highlight.py
downloadeumel-src-04e68443040c7abad84d66477e98f93bed701760.tar.gz
eumel-src-04e68443040c7abad84d66477e98f93bed701760.tar.bz2
eumel-src-04e68443040c7abad84d66477e98f93bed701760.zip
Initial import
Diffstat (limited to 'tools/highlight.py')
-rwxr-xr-xtools/highlight.py55
1 files changed, 55 insertions, 0 deletions
diff --git a/tools/highlight.py b/tools/highlight.py
new file mode 100755
index 0000000..ecdb49e
--- /dev/null
+++ b/tools/highlight.py
@@ -0,0 +1,55 @@
+#!/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("""<!DOCTYPE html>
+ <html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
+ <link rel="stylesheet" href="/style.min.css" type="text/css" />
+ <title>{{ path }}</title>
+ <style>
+ body {
+ max-width: none;
+ }
+ </style>
+ </head>
+ <body>
+ <h1>{{ path }}</h1>
+ <p><a href="{{ rawfile }}">Raw file</a><br><a href="{{ index }}">Back to index</a></p>
+ {{ code|safe }}
+ </body></html>""")
+
+ destdir = '_build'
+ f = sys.argv[1]
+ print (f)
+
+ 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:
+ # that’s fine
+ sys.exit (0)
+
+ 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)
+