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..d767777d97ec81fdb572ee85ae6c6a6e7c3e2fd8 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 |
# 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, |
Dirk Pranke
2016/07/25 21:12:36
nit: no spaces between strip_whitespace=False.
aberent
2016/07/27 09:46:36
Done.
|
+ 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=True): |
"""Helper function to inline external files of various types""" |
filepath = GetFilepath(src_match) |
if filepath is None: |
@@ -243,14 +248,15 @@ def DoInline( |
"""Helper function to directly inline generic external files (without |
wrapping them with any kind of tags). |
""" |
- return InlineFileContents(src_match, '%s') |
+ return InlineFileContents(src_match, '%s', strip_whitespace=False) |
def InlineScript(match): |
"""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=strip_whitespace) |
def InlineCSSText(text, css_filepath): |
"""Helper function that inlines external resources in CSS text""" |
@@ -321,7 +327,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 +346,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 +367,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 = True, |
Dirk Pranke
2016/07/25 21:12:36
same nit.
aberent
2016/07/27 09:46:36
Done.
|
+ rewrite_function=None, filename_expansion_function=None): |
"""Inlines the resources in a specified file and returns it as a string. |
Args: |
@@ -373,6 +383,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, |
Dirk Pranke
2016/07/25 21:12:36
same nit.
aberent
2016/07/27 09:46:36
Done.
|
rewrite_function=rewrite_function, |
filename_expansion_function=filename_expansion_function).inlined_data |
except IOError, e: |
@@ -411,6 +422,7 @@ def GetResourceFilenames(filename, |
names_only=True, |
preprocess_only=False, |
allow_external_script=allow_external_script, |
+ strip_whitespace = False, |
Dirk Pranke
2016/07/25 21:12:36
same nit.
aberent
2016/07/27 09:46:36
Done.
|
rewrite_function=rewrite_function, |
filename_expansion_function=filename_expansion_function).inlined_files |
except IOError, e: |