diff options
author | Lars-Dominik Braun <lars@6xq.net> | 2017-02-10 19:53:49 +0100 |
---|---|---|
committer | Lars-Dominik Braun <lars@6xq.net> | 2017-02-10 19:53:49 +0100 |
commit | 18261c201b6ed3342d30271f8647be257e843acc (patch) | |
tree | fdee76b6ec3ec05fe49f4335fe680d351a081265 /tools/highlight.py | |
parent | d568f2aff352201434f34e3594658ab79c9119ce (diff) | |
download | eumel-src-18261c201b6ed3342d30271f8647be257e843acc.tar.gz eumel-src-18261c201b6ed3342d30271f8647be257e843acc.tar.bz2 eumel-src-18261c201b6ed3342d30271f8647be257e843acc.zip |
Add syntax highlighting tools
Patched pygments is required
Diffstat (limited to 'tools/highlight.py')
-rwxr-xr-x | tools/highlight.py | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/tools/highlight.py b/tools/highlight.py new file mode 100755 index 0000000..a5da820 --- /dev/null +++ b/tools/highlight.py @@ -0,0 +1,56 @@ +#!/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) + if not os.path.isdir (basedestdir): + os.makedirs (basedestdir) + 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) + |