Annotation of kupuMPIWG/tools/compress.py, revision 1.1.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>