Chromium Code Reviews| Index: tools/grit/grit/format/html_inline.py |
| diff --git a/tools/grit/grit/format/html_inline.py b/tools/grit/grit/format/html_inline.py |
| index 643052dd2e66063e4c2155831f32a3e8ac92c203..253632de173e6a5d44fe3952c84deb646ee1622b 100755 |
| --- a/tools/grit/grit/format/html_inline.py |
| +++ b/tools/grit/grit/format/html_inline.py |
| @@ -18,6 +18,7 @@ import mimetypes |
| from grit import lazy_re |
| from grit import util |
| +from grit.format import minifier |
|
Lei Zhang
2016/08/02 16:47:47
Alphabetical order.
aberent
2016/08/02 20:27:41
It is. The existing convention in build.py is that
Lei Zhang
2016/08/02 20:43:32
Whoops, missed the dot. X_X
|
| # There is a python bug that makes mimetypes crash if the Windows |
| # registry contains non-Latin keys ( http://bugs.python.org/issue9291 |
| @@ -129,8 +130,8 @@ class InlinedData: |
| def DoInline( |
| input_filename, grd_node, allow_external_script=False, |
| - preprocess_only=False, names_only=False, rewrite_function=None, |
| - filename_expansion_function=None): |
| + preprocess_only=False, names_only=False, strip_whitespace=False, |
| + rewrite_function=None, filename_expansion_function=None): |
| """Helper function that inlines the resources in a specified file. |
| Reads input_filename, finds all the src attributes and attempts to |
| @@ -142,6 +143,7 @@ def DoInline( |
| grd_node: html node from the grd file for this include tag |
| preprocess_only: Skip all HTML processing, only handle <if> and <include>. |
| names_only: |nil| will be returned for the inlined contents (faster). |
| + strip_whitespace: remove whitespace and comments in the input files. |
| rewrite_function: function(filepath, text, distribution) which will be |
| called to rewrite html content before inlining images. |
| filename_expansion_function: function(filename) which will be called to |
| @@ -220,7 +222,10 @@ def DoInline( |
| else: |
| str = leading + trailing |
| - def InlineFileContents(src_match, pattern, inlined_files=inlined_files): |
| + def InlineFileContents(src_match, |
| + pattern, |
| + inlined_files=inlined_files, |
| + strip_whitespace=False): |
| """Helper function to inline external files of various types""" |
| filepath = GetFilepath(src_match) |
| if filepath is None: |
| @@ -237,6 +242,7 @@ def DoInline( |
| return pattern % InlineToString( |
| filepath, grd_node, allow_external_script=allow_external_script, |
| + strip_whitespace=strip_whitespace, |
| filename_expansion_function=filename_expansion_function) |
| def InlineIncludeFiles(src_match): |
| @@ -249,8 +255,9 @@ def DoInline( |
| """Helper function to inline external script files""" |
| attrs = (match.group('attrs1') + match.group('attrs2')).strip() |
| if attrs: |
| - attrs = ' ' + attrs |
| - return InlineFileContents(match, '<script' + attrs + '>%s</script>') |
| + attrs = ' ' + attrs |
| + return InlineFileContents(match, '<script' + attrs + '>%s</script>', |
| + strip_whitespace=True) |
| def InlineCSSText(text, css_filepath): |
| """Helper function that inlines external resources in CSS text""" |
| @@ -321,7 +328,13 @@ def DoInline( |
| # going to throw out anyway. |
| flat_text = CheckConditionalElements(flat_text) |
| + flat_text = _INCLUDE_RE.sub(InlineIncludeFiles, flat_text) |
| + |
| if not preprocess_only: |
| + if strip_whitespace: |
| + flat_text = minifier.Minify(flat_text, |
| + os.path.splitext(input_filename)[1]) |
| + |
| if not allow_external_script: |
| # We need to inline css and js before we inline images so that image |
| # references gets inlined in the css and js |
| @@ -334,8 +347,6 @@ def DoInline( |
| lambda m: InlineCSSFile(m, '<style>%s</style>'), |
| flat_text) |
| - flat_text = _INCLUDE_RE.sub(InlineIncludeFiles, flat_text) |
| - |
| # Check conditional elements, second pass. This catches conditionals in any |
| # of the text we just inlined. |
| flat_text = CheckConditionalElements(flat_text) |
| @@ -357,8 +368,8 @@ def DoInline( |
| def InlineToString(input_filename, grd_node, preprocess_only = False, |
| - allow_external_script=False, rewrite_function=None, |
| - filename_expansion_function=None): |
| + allow_external_script=False, strip_whitespace=False, |
| + rewrite_function=None, filename_expansion_function=None): |
| """Inlines the resources in a specified file and returns it as a string. |
| Args: |
| @@ -373,6 +384,7 @@ def InlineToString(input_filename, grd_node, preprocess_only = False, |
| grd_node, |
| preprocess_only=preprocess_only, |
| allow_external_script=allow_external_script, |
| + strip_whitespace=strip_whitespace, |
| rewrite_function=rewrite_function, |
| filename_expansion_function=filename_expansion_function).inlined_data |
| except IOError, e: |
| @@ -411,6 +423,7 @@ def GetResourceFilenames(filename, |
| names_only=True, |
| preprocess_only=False, |
| allow_external_script=allow_external_script, |
| + strip_whitespace=False, |
| rewrite_function=rewrite_function, |
| filename_expansion_function=filename_expansion_function).inlined_files |
| except IOError, e: |