From 18261c201b6ed3342d30271f8647be257e843acc Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Fri, 10 Feb 2017 19:53:49 +0100 Subject: Add syntax highlighting tools Patched pygments is required --- .gitignore | 2 ++ Makefile | 14 ++++++++++++++ README.rst | 8 ++++++++ tools/highlight.py | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ tools/listdir.py | 34 +++++++++++++++++++++++++++++++++ 5 files changed, 114 insertions(+) create mode 100644 .gitignore create mode 100644 Makefile create mode 100644 README.rst create mode 100755 tools/highlight.py create mode 100755 tools/listdir.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e81d4a3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +_build +*.sw? diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..f31f41c --- /dev/null +++ b/Makefile @@ -0,0 +1,14 @@ +all: _build/index.html + +_build: tools/highlight.py + mkdir -p _build && \ + find . -mindepth 2 -type f -not -path './.git/*' -not -path './doc/*' -not -path './_build/*' | cut -d / -f 2- | parallel 'tools/highlight.py {}' + +_build/index.html: tools/listdir.py | _build + pushd _build && find . -name '*.html' | cut -d / -f 2- | sort | ../tools/listdir.py src/ > index.html + +.PHONY: clean + +clean: + $(RM) -r _build + diff --git a/README.rst b/README.rst new file mode 100644 index 0000000..511d032 --- /dev/null +++ b/README.rst @@ -0,0 +1,8 @@ +EUMEL source code +================= + +Source code and documentation for the EUMEL operating system. + +Note: This repository will be rebased if older or newer versions of the files +in it surface. This way EUMEL’s development history will be recreated. + 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(""" + + + + + + {{ path }} + + + +

{{ path }}

+

Raw file
Back to index

+ {{ code|safe }} + """) + + 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) + diff --git a/tools/listdir.py b/tools/listdir.py new file mode 100755 index 0000000..58e0ced --- /dev/null +++ b/tools/listdir.py @@ -0,0 +1,34 @@ +#!/usr/bin/env python +# vim: set fileencoding=utf8 : + +""" +Create HTML directory index +""" + +if __name__ == '__main__': + import sys, os + from jinja2 import Template + + tpl = Template(""" + + + + + + Index of {{ name }} + + +

Index of {{ name }}

+

Back.

+ + """) + + files = map (str.strip, sys.stdin.readlines ()) + name = sys.argv[1] + + tpl.stream(files=files, name=name, root=os.path.relpath('.', name)).dump (sys.stdout) + -- cgit v1.2.3