1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
#
# txt2tags marks parsing tester (http://txt2tags.org)
# See also: ../run.py ../lib.py
#
import glob
import os
import sys
sys.path.insert(0, "..")
import lib
del sys.path[0]
# left files are generated from right ones (using smart filters)
ALIASES = {
"numlist": "list",
"deflist": "list",
"numtitle": "title",
"raw": "verbatim",
"tagged": "verbatim",
}
# smart filters to allow source inheritance
FILTERS = {
"deflist": [("pre", "hyphen", "colon"), ("pre", "^( *)-", r"\1:")],
"numlist": [("pre", "hyphen", "plus"), ("pre", "^( *)-", r"\1+")],
"numtitle": [("pre", "equal", "plus"), ("pre", "=", "+")],
"raw": [("pre", "verbatim", "raw"), ("pre", "`", '"')],
"tagged": [("pre", "verbatim", "tagged"), ("pre", "`", "'")],
}
# convert FILTERS tuples to txt2tags pre/postproc rules
def addFilters(filters):
if not filters:
return []
config = []
cmdline = []
for filter in filters:
config.append(
"%%!%sproc: '%s' %s" % filter
) # don't quote 2nd -- breaks tagged filter
if config:
lib.WriteFile(lib.CONFIG_FILE, "\n".join(config))
cmdline = ["-C", lib.CONFIG_FILE]
return cmdline
def run():
# test all .t2t files found
for infile in glob.glob("*.t2t"):
basename = infile.replace(".t2t", "")
outfile = basename + ".html"
if lib.initTest(basename, infile, outfile):
cmdline = addFilters(FILTERS.get(basename))
cmdline.append(infile)
lib.test(cmdline, outfile)
# using smart filters, same files generate more than one output
for alias in ALIASES:
infile = ALIASES[alias] + ".t2t"
outfile = alias + ".html"
if lib.initTest(alias, infile, outfile):
cmdline = addFilters(FILTERS.get(alias))
cmdline.extend(["-o", outfile, infile])
lib.test(cmdline, outfile)
# clean up
if os.path.isfile(lib.CONFIG_FILE):
os.remove(lib.CONFIG_FILE)
|