From 6d39d67bc90e2a6e4cd22539be270f246069e64a Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Sat, 3 Jan 2015 22:33:08 -0800 Subject: Rewrote spec2md in python. Better to only require python, not python and perl. --- Makefile | 2 +- spec2md.pl | 36 ------------------------------------ spec2md.py | 41 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 42 insertions(+), 37 deletions(-) delete mode 100644 spec2md.pl create mode 100644 spec2md.py diff --git a/Makefile b/Makefile index e00107a..0791f1a 100644 --- a/Makefile +++ b/Makefile @@ -178,7 +178,7 @@ dingus: js/commonmark.js ### Spec ### spec.md: $(SPEC) - perl spec2md.pl < $< > $@ + python3 spec2md.py $< > $@ spec: spec.html @anchors=`perl -ne '@matches = / id="([^"]*)"/g; foreach $$match (@matches) { print "$$match\n"; }' $<`; \ diff --git a/spec2md.pl b/spec2md.pl deleted file mode 100644 index 313f86f..0000000 --- a/spec2md.pl +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/env perl -use strict; -use warnings; - -my $stage = 0; -my $example = 0; -my @match; -my $section = ""; - -while () { - if (/^\.$/) { - if ($stage == 0) { - $example++; - print "\n
\n"; - print "\n\n"; - print "````````````````````````````````````````````````````````` markdown\n"; - } elsif ($stage == 1) { - print "`````````````````````````````````````````````````````````\n\n"; - print "````````````````````````````````````````````````````````` html\n"; - } elsif ($stage == 2) { - print "`````````````````````````````````````````````````````````\n\n"; - print "
\n\n"; - } else { - die "Encountered unknown stage $stage"; - } - $stage = ($stage + 1) % 3; - } else { - if ($stage == 0 && (@match = ($_ =~ /^#{1,6} *(.*)/))) { - $section = $match[0]; - } - if ($stage != 0) { - $_ =~ s/ /␣/g; - } - print $_; - } -} 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
\n".format(example, section)) + sys.stdout.write("\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("
\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) -- cgit v1.2.3