| Index: tools/grit/grit/format/html_inline.py
|
| ===================================================================
|
| --- tools/grit/grit/format/html_inline.py (revision 51538)
|
| +++ tools/grit/grit/format/html_inline.py (working copy)
|
| @@ -19,6 +19,8 @@
|
| import base64
|
| import mimetypes
|
|
|
| +from grit.node import base
|
| +
|
| DIST_DEFAULT = 'chromium'
|
| DIST_ENV_VAR = 'CHROMIUM_BUILD'
|
| DIST_SUBSTR = '%DISTRIBUTION%'
|
| @@ -67,7 +69,7 @@
|
| prefix = src_match.string[src_match.start():src_match.start('filename')-1]
|
| return "%s\"data:%s;base64,%s\"" % (prefix, mimetype, inline_data)
|
|
|
| -def InlineFile(input_filename, output_filename):
|
| +def InlineFile(input_filename, output_filename, grd_node):
|
| """Inlines the resources in a specified file.
|
|
|
| Reads input_filename, finds all the src attributes and attempts to
|
| @@ -77,6 +79,7 @@
|
| Args:
|
| input_filename: name of file to read in
|
| output_filename: name of file to be written to
|
| + grd_node: html node from the grd file for this include tag
|
| """
|
| input_filepath = os.path.dirname(input_filename)
|
|
|
| @@ -100,6 +103,16 @@
|
| filename = filename.replace('%DISTRIBUTION%', distribution)
|
| return os.path.join(input_filepath, filename)
|
|
|
| + def IsConditionSatisfied(src_match):
|
| + expression = src_match.group('expression')
|
| + return grd_node is None or grd_node.EvaluateCondition(expression)
|
| +
|
| + def CheckConditionalElements(src_match):
|
| + """Helper function to conditionally inline inner elements"""
|
| + if not IsConditionSatisfied(src_match):
|
| + return ''
|
| + return src_match.group('content')
|
| +
|
| def InlineFileContents(src_match, pattern):
|
| """Helper function to inline external script and css files"""
|
| filepath = GetFilepath(src_match)
|
| @@ -144,7 +157,6 @@
|
| lambda m: SrcReplace(m, filepath),
|
| text)
|
|
|
| -
|
| # We need to inline css and js before we inline images so that image
|
| # references gets inlined in the css and js
|
| flat_text = re.sub('<script .*?src="(?P<filename>[^"\']*)".*?></script>',
|
| @@ -157,10 +169,16 @@
|
| flat_text)
|
|
|
| flat_text = re.sub(
|
| - '<!--\s*include\s+file="(?P<filename>[^"\']*)".*-->',
|
| + '<include\s+src="(?P<filename>[^"\']*)".*>',
|
| InlineIncludeFiles,
|
| flat_text)
|
|
|
| + # Check conditional elements, remove unsatisfied ones from the file.
|
| + flat_text = re.sub('<if .*?expr="(?P<expression>[^"]*)".*?>\s*' +
|
| + '(?P<content>([\s\S]+?))\s*</if>',
|
| + CheckConditionalElements,
|
| + flat_text)
|
| +
|
| # TODO(glen): Make this regex not match src="" text that is not inside a tag
|
| flat_text = re.sub('src="(?P<filename>[^"\']*)"',
|
| SrcReplace,
|
|
|