aboutsummaryrefslogtreecommitdiff
path: root/spec2md.py
blob: bbed99778e11a0c56f9defdb1ce2bfdce59adf14 (plain)
  1. #!/usr/bin/env python3
  2. import re
  3. import sys
  4. stage = 0
  5. example = 0
  6. section = ""
  7. if len(sys.argv) > 1:
  8. specfile = sys.argv[1]
  9. else:
  10. specfile = 'spec.txt'
  11. with open(specfile, 'r', encoding='utf-8') as spec:
  12. for ln in spec:
  13. if re.match(r'^\.$', ln):
  14. if stage == 0:
  15. example += 1
  16. sys.stdout.write("\n<div class=\"example\" id=\"example-{0}\" data-section=\"{1}\">\n".format(example, section))
  17. sys.stdout.write("<div class=\"examplenum\"><a href=\"#example-{0}\">Example {0}</a>&nbsp;&nbsp;<a class=\"dingus\" title=\"open in interactive dingus\">(interact)</a></div>\n\n".format(example))
  18. sys.stdout.write("````````````````````````````````````````````````````````` markdown\n")
  19. stage = 1
  20. elif stage == 1:
  21. sys.stdout.write("`````````````````````````````````````````````````````````\n\n")
  22. sys.stdout.write("````````````````````````````````````````````````````````` html\n")
  23. stage = 2
  24. elif stage == 2:
  25. sys.stdout.write("`````````````````````````````````````````````````````````\n\n")
  26. sys.stdout.write("</div>\n")
  27. stage = 0
  28. else:
  29. sys.stderr.out("Encountered unknown stage {0}\n".format(stage))
  30. sys.exit(1)
  31. else:
  32. if stage == 0:
  33. match = re.match(r'^#{1,6} *(.*)', ln)
  34. if match:
  35. section = match.group(1)
  36. else:
  37. ln = re.sub(r' ', '␣', ln)
  38. sys.stdout.write(ln)