diff options
author | yenatch <yenatch@gmail.com> | 2013-12-08 17:05:28 -0500 |
---|---|---|
committer | yenatch <yenatch@gmail.com> | 2013-12-09 01:40:04 -0500 |
commit | 94052ab5b94a8817c62f1d3d06da2e1c9d5be658 (patch) | |
tree | 8e6afbab081a940e4a7803967c36a0c4c844c9b2 | |
parent | 9eb2cf3d217e8f9e0e86b8d41eac21ce54dd2ba4 (diff) |
prequeue: dont initialize a new preprocessor for each file
-rw-r--r-- | preprocessor.py | 15 | ||||
-rw-r--r-- | prequeue.py | 25 |
2 files changed, 24 insertions, 16 deletions
diff --git a/preprocessor.py b/preprocessor.py index b5f2e3a4a..c9f90553b 100644 --- a/preprocessor.py +++ b/preprocessor.py @@ -51,17 +51,16 @@ def load_pokecrystal_macros(): return ourmacros -def preprocess(config, macros, lines=None): - """ - Entry point for the preprocessor. - """ +def setup_processor(): + config = configuration.Config() + macros = load_pokecrystal_macros() processor = preprocessor.Preprocessor(config, macros) - return processor.preprocess(lines=lines) + return processor def main(): - config = configuration.Config() - macros = load_pokecrystal_macros() - return preprocess(config, macros) + processor = setup_processor() + processor.preprocess() + processor.update_globals # only run against stdin when not included as a module if __name__ == "__main__": diff --git a/prequeue.py b/prequeue.py index 2adb03bfb..a91f1b336 100644 --- a/prequeue.py +++ b/prequeue.py @@ -8,24 +8,33 @@ a single process. import os import sys -import extras.pokemontools.configuration as configuration - import preprocessor -def main(): - config = configuration.Config() - macros = preprocessor.load_pokecrystal_macros() +def preprocess_queue(filenames=sys.argv[1:]): + stdin = sys.stdin stdout = sys.stdout - for source in sys.argv[1:]: + processor = preprocessor.setup_processor() + + for source in filenames: dest = os.path.splitext(source)[0] + '.tx' sys.stdin = open(source, 'r') sys.stdout = open(dest, 'w') - preprocessor.preprocess(config, macros) + processor.preprocess() - # reset stdout + processor.update_globals() + + sys.stdin = stdin sys.stdout = stdout +def main(): + filenames = list(set(sys.argv[1:])) + if filenames: + num_files = len(filenames) + s = '' if num_files == 1 else 's' + sys.stdout.write('Preprocessing {0} file{1}...\n'.format(num_files, s)) + preprocess_queue(filenames) + if __name__ == '__main__': main() |