#!/usr/bin/python
+#
+# Copyright (c) 2009 Petri Lehtinen <petri@digip.org>
+#
+# Jansson is free software; you can redistribute it and/or modify
+# it under the terms of the MIT license. See LICENSE for details.
import os
import sys
+from optparse import OptionParser
-def open_files(outdir, i):
- return (open(os.path.join(outdir, 'test%02d.in' % i), 'w'),
- open(os.path.join(outdir, 'test%02d.out' % i), 'w'))
+def strip_file(filename):
+ with open(filename) as fobj:
+ data = fobj.read()
+ with open(filename, 'w') as fobj:
+ fobj.write(data.strip())
-def close_files(input, output):
- print os.path.basename(input.name), os.path.basename(output.name)
- input.close()
- output.close()
+def open_files(outdir, i, name):
+ basename = '%02d_%s' % (i, name)
+ print basename
+ input_path = os.path.join(outdir, basename + '.in')
+ output_path = os.path.join(outdir, basename + '.out')
+ return open(input_path, 'w'), open(output_path, 'w')
def main():
- if len(sys.argv) != 3:
- print 'usage: %s input-file output-directory' % sys.argv[0]
+ parser = OptionParser('usage: %prog [options] inputfile outputdir')
+ parser.add_option('--strip', help='strip whitespace from input',
+ action='store_true', default=False)
+ options, args = parser.parse_args()
+
+ if len(args) != 2:
+ parser.print_help()
return 2
- infile = sys.argv[1]
- outdir = sys.argv[2]
+ infile = os.path.normpath(args[0])
+ outdir = os.path.normpath(args[1])
if not os.path.exists(outdir):
print >>sys.stderr, 'output directory %r does not exist!' % outdir
return 1
- i = 0
- input, output = open_files(outdir, i)
- current = input
+ n = 0
+ current = None
+ input, output = None, None
for line in open(infile):
- if line == '====\n':
- current = output
- elif line == '========\n':
- close_files(input, output)
- i += 1
- input, output = open_files(outdir, i)
+ if line.startswith('==== '):
+ n += 1
+ if input is not None and output is not None:
+ input.close()
+ output.close()
+ if options.strip:
+ strip_file(input.name)
+ input, output = open_files(outdir, n, line[5:line.find(' ====\n')])
current = input
+ elif line == '====\n':
+ current = output
else:
current.write(line)
- close_files(input, output)
- print >>sys.stderr, "%d test cases" % (i + 1)
+ if input is not None and output is not None:
+ input.close()
+ output.close()
+
+ print >>sys.stderr, "%s: %d test cases" % (infile, n)
if __name__ == '__main__':
sys.exit(main() or 0)