From 58750ed9314a7252f8ea4d763c52675d65b5be57 Mon Sep 17 00:00:00 2001 From: gpotter2 <gpotter@potter.fr> Date: Mon, 20 Mar 2017 20:56:08 +0100 Subject: [PATCH] AutoParser --- dev/scripts/autoFixer.py | 65 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 dev/scripts/autoFixer.py diff --git a/dev/scripts/autoFixer.py b/dev/scripts/autoFixer.py new file mode 100644 index 00000000..b9d00e49 --- /dev/null +++ b/dev/scripts/autoFixer.py @@ -0,0 +1,65 @@ +#! /usr/bin/env python + +"Process python files to improve python 3 migration" + +import os +import sys +import getopt +# Modified glob version to support ** +import glob2 +import re + +def main(): + tabsize = 8 + try: + opts, args = getopt.getopt(sys.argv[1:], "t:") + if not args: + raise getopt.error, "At least one file argument required" + except getopt.error, msg: + print msg + print "usage:", sys.argv[0], "files ..." + return + + files = [] + for arg in args: + files.extend(glob2.glob(arg)) + + for filename in files: + if "autoFixer" in filename or "build" in filename: + continue + process(filename, tabsize) + +# Utils, regexes +r1_ = r'\"(([^\"\n]|\\\")*(\\x|\\0)([^\"\n]|\\\")*)\"' +r2_ = r"\'(([^\'\n]|\\\')*(\\x|\\0)([^\'\n]|\\\')*)\'" +#r3_ = r"(?<![\"'\\])(['\"])\1([^\"'])" + +r1_r = r'b"\1"' +r2_r = r"b'\1'" +#r3_r = r"b\1\1\2" + +def process(filename, tabsize): + try: + f = open(filename) + text = f.read() + f.close() + except IOError, msg: + print "%r: I/O error: %s" % (filename, msg) + return + # Remove tabs + newtext = text.expandtabs(tabsize) + # Auto-detect bytes with "\x...", "\0..." + newtext = re.sub(r1_, r1_r, newtext) + # Auto-detect bytes with '\x...', '\0...' + newtext = re.sub(r2_, r2_r, newtext) + # Auto-detect bytes with '', "" but not """, ''' + #newtext = re.sub(r3_, r3_r, newtext) + if newtext == text: + return + f = open(filename, "w") + f.write(newtext) + f.close() + print filename + +if __name__ == '__main__': + main() -- GitLab