Skip to content

Instantly share code, notes, and snippets.

@sdfsdhgjkbmnmxc
Last active December 14, 2015 22:18
Show Gist options
  • Save sdfsdhgjkbmnmxc/5157052 to your computer and use it in GitHub Desktop.
Save sdfsdhgjkbmnmxc/5157052 to your computer and use it in GitHub Desktop.
#!/usr/bin/python
import sys
import re
def main():
if len(sys.argv) == 1:
sys.stderr.write('Usage: {} <file> <file> ...\n'.format(sys.argv[0]))
sys.exit(1)
for fname in sys.argv[1:]:
s = process_file(open(fname).read().decode('utf-8'))
open(fname, 'w').write(s.encode('utf-8'))
space = ' ' * 4
def process_file(s):
for regex, result in [
# strip trailing whitespaces
(re.compile('\s*\n'), '\n'),
# "\n" after ,"
(re.compile('\s*,\s*'), ',\n'),
# "\n" after {, "\n" around "}"
(re.compile('\s*\{([^\}]*)\}\s*', re.MULTILINE),
lambda m: u' {\n' + space + process_brackets(m.group(1)) + '\n}\n\n'),
]:
s = regex.sub(result, s)
return s
def process_brackets(s):
for regex, result in [
# space after ":"
(re.compile(':\s*'), ': '),
# "\n" after ;
(re.compile('\s*;\s*', re.MULTILINE), ';\n' + space),
# " " after ,"
(re.compile('\s*,\s*'), ', '),
# fix comment
(re.compile('\s*\*/'), '*/'),
]:
s = regex.sub(result, s)
return s.strip()
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment