Spaces:
Build error
Build error
| import argparse | |
| import re | |
| def main(): | |
| args = parse_command_line() | |
| data = read(args.input) | |
| data = convert(data) | |
| write(args.output, data) | |
| def parse_command_line(): | |
| parser = argparse.ArgumentParser( | |
| description='Replace \\def with \\newcommand where possible.', | |
| ) | |
| parser.add_argument( | |
| 'input', | |
| help='TeX input file with \\def', | |
| ) | |
| parser.add_argument( | |
| '--output', | |
| '-o', | |
| required=True, | |
| help='TeX output file with \\newcommand', | |
| ) | |
| return parser.parse_args() | |
| def read(path): | |
| with open(path, mode='rb') as handle: | |
| return handle.read() | |
| def convert(data): | |
| return re.sub( | |
| rb'((?:\\(?:expandafter|global|long|outer|protected)' | |
| rb'(?: +|\r?\n *)?)*)?' | |
| rb'\\def *(\\[a-zA-Z]+) *(?:#+([0-9]))*\{', | |
| replace, | |
| data, | |
| ) | |
| def replace(match): | |
| prefix = match.group(1) | |
| if ( | |
| prefix is not None and | |
| ( | |
| b'expandafter' in prefix or | |
| b'global' in prefix or | |
| b'outer' in prefix or | |
| b'protected' in prefix | |
| ) | |
| ): | |
| pass #return match.group(0) | |
| result = rb'\newcommand' | |
| result += b'{' + match.group(2) + b'}' | |
| if match.lastindex == 3: | |
| result += b'[' + match.group(3) + b']' | |
| result += b'{' | |
| return result | |
| def write(path, data): | |
| with open(path, mode='wb') as handle: | |
| handle.write(data) | |
| print('=> File written: {0}'.format(path)) | |
| if __name__ == '__main__': | |
| main() |