diff options
author | John MacFarlane <jgm@berkeley.edu> | 2015-01-03 22:33:08 -0800 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2015-01-03 22:33:08 -0800 |
commit | 6d39d67bc90e2a6e4cd22539be270f246069e64a (patch) | |
tree | 4de5a5d6585a7d0addccee3406af260ba7af0cfd /spec2md.py | |
parent | 918867accab909c6efb2f762773b9f72c8f1014b (diff) |
Rewrote spec2md in python.
Better to only require python, not python and perl.
Diffstat (limited to 'spec2md.py')
-rw-r--r-- | spec2md.py | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/spec2md.py b/spec2md.py new file mode 100644 index 0000000..bbed997 --- /dev/null +++ b/spec2md.py @@ -0,0 +1,41 @@ +#!/usr/bin/env python3 +import re +import sys + +stage = 0 +example = 0 +section = "" + +if len(sys.argv) > 1: + specfile = sys.argv[1] +else: + specfile = 'spec.txt' + +with open(specfile, 'r', encoding='utf-8') as spec: + for ln in spec: + if re.match(r'^\.$', ln): + if stage == 0: + example += 1 + sys.stdout.write("\n<div class=\"example\" id=\"example-{0}\" data-section=\"{1}\">\n".format(example, section)) + sys.stdout.write("<div class=\"examplenum\"><a href=\"#example-{0}\">Example {0}</a> <a class=\"dingus\" title=\"open in interactive dingus\">(interact)</a></div>\n\n".format(example)) + sys.stdout.write("````````````````````````````````````````````````````````` markdown\n") + stage = 1 + elif stage == 1: + sys.stdout.write("`````````````````````````````````````````````````````````\n\n") + sys.stdout.write("````````````````````````````````````````````````````````` html\n") + stage = 2 + elif stage == 2: + sys.stdout.write("`````````````````````````````````````````````````````````\n\n") + sys.stdout.write("</div>\n") + stage = 0 + else: + sys.stderr.out("Encountered unknown stage {0}\n".format(stage)) + sys.exit(1) + else: + if stage == 0: + match = re.match(r'^#{1,6} *(.*)', ln) + if match: + section = match.group(1) + else: + ln = re.sub(r' ', '␣', ln) + sys.stdout.write(ln) |