OLD | NEW |
---|---|
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright (C) 2012 Google Inc. All rights reserved. | 2 # Copyright (C) 2012 Google Inc. All rights reserved. |
3 # | 3 # |
4 # Redistribution and use in source and binary forms, with or without | 4 # Redistribution and use in source and binary forms, with or without |
5 # modification, are permitted provided that the following conditions are | 5 # modification, are permitted provided that the following conditions are |
6 # met: | 6 # met: |
7 # | 7 # |
8 # * Redistributions of source code must retain the above copyright | 8 # * Redistributions of source code must retain the above copyright |
9 # notice, this list of conditions and the following disclaimer. | 9 # notice, this list of conditions and the following disclaimer. |
10 # * Redistributions in binary form must reproduce the above | 10 # * Redistributions in binary form must reproduce the above |
(...skipping 16 matching lines...) Expand all Loading... | |
27 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 27 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
28 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 28 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
29 | 29 |
30 # Usage: make-file-arrays.py [--condition=condition-string] --out-h=<header-file -name> --out-cpp=<cpp-file-name> <input-file>... | 30 # Usage: make-file-arrays.py [--condition=condition-string] --out-h=<header-file -name> --out-cpp=<cpp-file-name> <input-file>... |
31 | 31 |
32 import os.path | 32 import os.path |
33 import re | 33 import re |
34 import sys | 34 import sys |
35 from optparse import OptionParser | 35 from optparse import OptionParser |
36 | 36 |
37 rjsmin_path = os.path.abspath(os.path.join( | |
38 os.path.dirname(__file__), | |
39 "..", | |
40 "..", | |
41 "build", | |
42 "scripts")) | |
43 sys.path.append(rjsmin_path) | |
44 import rjsmin | |
45 | |
37 | 46 |
38 def make_variable_name_and_read(file_name): | 47 def make_variable_name_and_read(file_name): |
39 result = re.match(r'([\w\d_]+)\.([\w\d_]+)', os.path.basename(file_name)) | 48 result = re.match(r'([\w\d_]+)\.([\w\d_]+)', os.path.basename(file_name)) |
40 if not result: | 49 if not result: |
41 print 'Invalid input file name:', os.path.basename(file_name) | 50 print 'Invalid input file name:', os.path.basename(file_name) |
42 sys.exit(1) | 51 sys.exit(1) |
43 variable_name = result.group(1)[0].lower() + result.group(1)[1:] + result.gr oup(2).capitalize() | 52 variable_name = result.group(1)[0].lower() + result.group(1)[1:] + result.gr oup(2).capitalize() |
44 with open(file_name, 'rb') as f: | 53 with open(file_name, 'rb') as f: |
45 content = f.read() | 54 content = f.read() |
46 return variable_name, content | 55 return variable_name, content |
47 | 56 |
48 | 57 |
49 def strip_whitespace_and_comments(file_name, content): | 58 def strip_whitespace_and_comments(file_name, content): |
50 result = re.match(r'.*\.([^.]+)', file_name) | 59 result = re.match(r'.*\.([^.]+)', file_name) |
51 if not result: | 60 if not result: |
52 print 'The file name has no extension:', file_name | 61 print 'The file name has no extension:', file_name |
53 sys.exit(1) | 62 sys.exit(1) |
54 extension = result.group(1).lower() | 63 extension = result.group(1).lower() |
55 multi_line_comment = re.compile(r'/\*.*?\*/', re.MULTILINE | re.DOTALL) | 64 multi_line_comment = re.compile(r'/\*.*?\*/', re.MULTILINE | re.DOTALL) |
56 single_line_comment = re.compile(r'^//.*$', re.MULTILINE) | |
57 # Don't accidentally match URLs (http://...) | 65 # Don't accidentally match URLs (http://...) |
58 trailing_comment = re.compile(r'([^:])//.*$', re.MULTILINE) | |
59 repeating_space = re.compile(r'[ \t]+', re.MULTILINE) | 66 repeating_space = re.compile(r'[ \t]+', re.MULTILINE) |
60 leading_space = re.compile(r'^[ \t]+', re.MULTILINE) | 67 leading_space = re.compile(r'^[ \t]+', re.MULTILINE) |
61 trailing_space = re.compile(r'[ \t]+$', re.MULTILINE) | 68 trailing_space = re.compile(r'[ \t]+$', re.MULTILINE) |
62 empty_line = re.compile(r'\n+') | 69 empty_line = re.compile(r'\n+') |
63 if extension == 'js': | 70 if extension == 'js': |
64 content = multi_line_comment.sub('', content) | 71 content = rjsmin.jsmin(content) |
65 content = single_line_comment.sub('', content) | |
66 content = trailing_comment.sub(r'\1', content) | |
67 content = repeating_space.sub(' ', content) | |
68 content = leading_space.sub('', content) | |
69 content = trailing_space.sub('', content) | |
70 content = empty_line.sub('\n', content) | |
abarth-chromium
2014/04/26 17:08:36
It replaces this one, but may this one is too simp
| |
71 elif extension == 'css': | 72 elif extension == 'css': |
72 content = multi_line_comment.sub('', content) | 73 content = multi_line_comment.sub('', content) |
73 content = repeating_space.sub(' ', content) | 74 content = repeating_space.sub(' ', content) |
74 content = leading_space.sub('', content) | 75 content = leading_space.sub('', content) |
75 content = trailing_space.sub('', content) | 76 content = trailing_space.sub('', content) |
76 content = empty_line.sub('\n', content) | 77 content = empty_line.sub('\n', content) |
77 return content | 78 return content |
78 | 79 |
79 | 80 |
80 def process_file(file_name): | 81 def process_file(file_name): |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
147 | 148 |
148 names_and_contents = [process_file(file_name) for file_name in args] | 149 names_and_contents = [process_file(file_name) for file_name in args] |
149 | 150 |
150 if options.out_header: | 151 if options.out_header: |
151 write_header_file(options.out_header, options.flag, names_and_contents) | 152 write_header_file(options.out_header, options.flag, names_and_contents) |
152 write_cpp_file(options.out_cpp, options.flag, names_and_contents, options.ou t_header) | 153 write_cpp_file(options.out_cpp, options.flag, names_and_contents, options.ou t_header) |
153 | 154 |
154 | 155 |
155 if __name__ == '__main__': | 156 if __name__ == '__main__': |
156 sys.exit(main()) | 157 sys.exit(main()) |
OLD | NEW |