diff options
Diffstat (limited to 'deps/v8/tools/torque/format-torque.py')
-rwxr-xr-x | deps/v8/tools/torque/format-torque.py | 61 |
1 files changed, 57 insertions, 4 deletions
diff --git a/deps/v8/tools/torque/format-torque.py b/deps/v8/tools/torque/format-torque.py index 3470d2f3c3..aac432ef41 100755 --- a/deps/v8/tools/torque/format-torque.py +++ b/deps/v8/tools/torque/format-torque.py @@ -11,24 +11,77 @@ import sys import re from subprocess import Popen, PIPE +def preprocess(input): + input = re.sub(r'(if\s+)constexpr(\s*\()', r'\1/*COxp*/\2', input) + input = re.sub(r'(\)\s*\:\s*\S+\s+)labels\s+', + r'\1,\n/*_LABELS_HOLD_*/ ', input) + input = re.sub(r'(\s+)operator\s*(\'[^\']+\')', r'\1/*_OPE \2*/', input) + input = re.sub(r'(\s+)typeswitch\s*\(', r'\1/*_TYPE*/switch (', input) + input = re.sub(r'(\s+)case\s*\(([^\s]+)\s+\:\s*([^\:]+)\)(\s*)\:', + r'\1case \3: /*_TSV\2:*/', input) + input = re.sub(r'(\s+)case\s*\(([^\:]+)\)(\s*)\:', + r'\1case \2: /*_TSX*/', input) + input = re.sub(r'\sgenerates\s+\'([^\']+)\'\s*', + r' _GeNeRaTeS00_/*\1@*/', input) + input = re.sub(r'\sconstexpr\s+\'([^\']+)\'\s*', + r' _CoNsExP_/*\1@*/', input) + input = re.sub(r'\notherwise', + r'\n otherwise', input) + input = re.sub(r'(\n\s*\S[^\n]*\s)otherwise', + r'\1_OtheSaLi', input) + return input + +def postprocess(output): + output = re.sub(r'\/\*COxp\*\/', r'constexpr', output) + output = re.sub(r'(\S+)\s*: type([,>])', r'\1: type\2', output) + output = re.sub(r',([\n ]*)\/\*_LABELS_HOLD_\*\/', r'\1labels', output) + output = re.sub(r'\/\*_OPE \'([^\']+)\'\*\/', r"operator '\1'", output) + output = re.sub(r'\/\*_TYPE\*\/(\s*)switch', r'typeswitch', output) + output = re.sub(r'case ([^\:]+)\:\s*\/\*_TSX\*\/', + r'case (\1):', output) + output = re.sub(r'case ([^\:]+)\:\s*\/\*_TSV([^\:]+)\:\*\/', + r'case (\2: \1):', output) + output = re.sub(r'\n_GeNeRaTeS00_\s*\/\*([^@]+)@\*\/', + r"\n generates '\1'", output) + output = re.sub(r'_GeNeRaTeS00_\s*\/\*([^@]+)@\*\/', + r"generates '\1'", output) + output = re.sub(r'_CoNsExP_\s*\/\*([^@]+)@\*\/', + r"constexpr '\1'", output) + output = re.sub(r'\n(\s+)otherwise', + r"\n\1 otherwise", output) + output = re.sub(r'\n(\s+)_OtheSaLi', + r"\n\1otherwise", output) + output = re.sub(r'_OtheSaLi', + r"otherwise", output) + return output + if len(sys.argv) < 2 or len(sys.argv) > 3: print "invalid number of arguments" sys.exit(-1) use_stdout = True -if len(sys.argv) == 3 and sys.argv[1] == '-i': - use_stdout = False +lint = False +if len(sys.argv) == 3: + if sys.argv[1] == '-i': + use_stdout = False + if sys.argv[1] == '-l': + lint = True filename = sys.argv[len(sys.argv) - 1] with open(filename, 'r') as content_file: content = content_file.read() +original_input = content p = Popen(['clang-format', '-assume-filename=.ts'], stdin=PIPE, stdout=PIPE, stderr=PIPE) -output, err = p.communicate(content) +output, err = p.communicate(preprocess(content)) +output = postprocess(output) rc = p.returncode if (rc <> 0): sys.exit(rc); -if use_stdout: +if lint: + if (output != original_input): + print >>sys.stderr, filename + ' requires formatting' +elif use_stdout: print output else: output_file = open(filename, 'w') |