Annotation of kupuMPIWG/tools/compress.py, revision 1.1
1.1 ! dwinter 1: #!/usr/bin/env python
! 2:
! 3: """Remove comments, newlines and redundant whitespace from JavaScript code
! 4:
! 5: This reads all paths that were passed in as arguments on the command-line
! 6: and removes everything that is ignored by JavaScript. This makes that
! 7: the source isn't readable anymore (which I personally consider bad),
! 8: but also that less bytes have to be served by the server, scripts are
! 9: loaded faster and also that they're executed faster.
! 10:
! 11: WARNING: This script converts files in place! Original files will be
! 12: overwritten. Do *not* run this on a development version of your code,
! 13: since you won't be able to get them back into the original state. This
! 14: should be ran only by system administrators if they want to speed up
! 15: their setups.
! 16: """
! 17:
! 18: import sys, re
! 19:
! 20: one_line_comment = re.compile(r'^\s*//.*$', re.M)
! 21: trailing_comment = re.compile(r'//(\w|\s)*$', re.M)
! 22: multi_line_comment = re.compile(r'^\s*/\*.*?\*/', re.M | re.S)
! 23: whitespace_after_separator = re.compile(r';\s*', re.M | re.S)
! 24: whitespace_after_opening_bracket = re.compile(r'{\s*', re.M | re.S)
! 25: starting_whitespace = re.compile(r'^\s*', re.M | re.S)
! 26:
! 27: def strip(data):
! 28: """Processes the data, removing comments and unecessary whitespace."""
! 29: data = one_line_comment.sub('', data)
! 30: data = trailing_comment.sub('', data)
! 31: data = multi_line_comment.sub('', data)
! 32: data = whitespace_after_separator.sub(';', data)
! 33: data = whitespace_after_opening_bracket.sub('{', data)
! 34: data = starting_whitespace.sub('', data)
! 35: return data.strip()
! 36:
! 37: for file in sys.argv[1:]:
! 38: data = open(file).read()
! 39: data = strip(data)
! 40: open(file, 'w').write(data)
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>