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 |
# 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: |