File: run.py

package info (click to toggle)
txt2tags 2.5-2
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 2,264 kB
  • ctags: 471
  • sloc: python: 2,461; lisp: 414; ruby: 347; xml: 96; php: 95; sh: 83; makefile: 26
file content (74 lines) | stat: -rw-r--r-- 2,250 bytes parent folder | download | duplicates (2)
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
70
71
72
73
74
#
# txt2tags marks parsing tester (http://txt2tags.sf.net)
# See also: ../run.py ../lib.py
#

import os, sys, string, glob

sys.path.insert(0, '..')
import lib
del sys.path[0]

# sux
lib.OK = lib.FAILED = 0
lib.ERROR_FILES = []

# left files are generated from right ones (using smart filters)
ALIASES = {
	'numlist' : 'list',
	'deflist' : 'list',
	'numtitle': 'title',
	'raw'     : 'verbatim'
}

# smart filters to allow source inheritance and macros normalization
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', '`'     ,  '"'  ) ],
  'macro'   : [ ('post', os.path.abspath(""), '@DIRNAME@'),
                ('post', lib.getFileMtime('marks/macro.t2t'), '@MTIME@'),
                ('post', lib.getCurrentDate(), '@DATE@'),
                ('post', '^(Date.*)@MTIME@', r'\1@DATE@'),
                ('post', '^(Date.*)@MTIME@', r'\1@DATE@') ],
}

# 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)
	if config:
		lib.WriteFile(lib.CONFIG_FILE, string.join(config, '\n'))
		cmdline = ['-C', lib.CONFIG_FILE]
	return cmdline

def run():
	# test all .t2t files found
	for infile in glob.glob("*.t2t"):
		basename = string.replace(infile, '.t2t', '')
		outfile = basename + '.html'
		if lib.initTest(basename, infile, outfile):
			cmdline = addFilters(FILTERS.get(basename))
			cmdline.append(infile)
			lib.convert(cmdline)
			lib.diff(outfile)
	# using smart filters, same files generate more than one output
	for alias in ALIASES.keys():
		infile = ALIASES[alias] + '.t2t'
		outfile = alias + '.html'
		if lib.initTest(alias, infile, outfile):
			cmdline = addFilters(FILTERS.get(alias))
			cmdline.extend(['-o', outfile, infile])
			lib.convert(cmdline)
			lib.diff(outfile)
	# clean up
	if os.path.isfile(lib.CONFIG_FILE): os.remove(lib.CONFIG_FILE)
	
	return lib.OK, lib.FAILED, lib.ERROR_FILES

if __name__ == '__main__':
	print lib.MSG_RUN_ALONE