| Index: grit/format/html_inline.py
|
| ===================================================================
|
| --- grit/format/html_inline.py (revision 124)
|
| +++ grit/format/html_inline.py (working copy)
|
| @@ -72,7 +72,8 @@
|
|
|
|
|
| def SrcInlineAsDataURL(
|
| - src_match, base_path, distribution, inlined_files, names_only=False):
|
| + src_match, base_path, distribution, inlined_files, names_only=False,
|
| + filename_expansion_function=None):
|
| """regex replace function.
|
|
|
| Takes a regex match for src="filename", attempts to read the file
|
| @@ -93,6 +94,8 @@
|
| string
|
| """
|
| filename = src_match.group('filename')
|
| + if filename_expansion_function:
|
| + filename = filename_expansion_function(filename)
|
| quote = src_match.group('quote')
|
|
|
| if filename.find(':') != -1:
|
| @@ -126,7 +129,7 @@
|
|
|
| def DoInline(
|
| input_filename, grd_node, allow_external_script=False, names_only=False,
|
| - rewrite_function=None):
|
| + 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
|
| @@ -139,10 +142,14 @@
|
| names_only: |nil| will be returned for the inlined contents (faster).
|
| 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
|
| + rewrite filenames before attempting to read them.
|
| Returns:
|
| a tuple of the inlined data as a string and the set of filenames
|
| of all the inlined files
|
| """
|
| + if filename_expansion_function:
|
| + input_filename = filename_expansion_function(input_filename)
|
| input_filepath = os.path.dirname(input_filename)
|
| distribution = GetDistribution()
|
|
|
| @@ -153,7 +160,8 @@
|
| inlined_files=inlined_files):
|
| """Helper function to provide SrcInlineAsDataURL with the base file path"""
|
| return SrcInlineAsDataURL(
|
| - src_match, filepath, distribution, inlined_files, names_only=names_only)
|
| + src_match, filepath, distribution, inlined_files, names_only=names_only,
|
| + filename_expansion_function=filename_expansion_function)
|
|
|
| def GetFilepath(src_match, base_path = input_filepath):
|
| filename = src_match.group('filename')
|
| @@ -163,6 +171,8 @@
|
| return None
|
|
|
| filename = filename.replace('%DISTRIBUTION%', distribution)
|
| + if filename_expansion_function:
|
| + filename = filename_expansion_function(filename)
|
| return os.path.normpath(os.path.join(base_path, filename))
|
|
|
| def IsConditionSatisfied(src_match):
|
| @@ -214,12 +224,16 @@
|
| inlined_files.add(filepath)
|
|
|
| if names_only:
|
| - inlined_files.update(GetResourceFilenames(filepath,
|
| - allow_external_script,
|
| - rewrite_function))
|
| + inlined_files.update(GetResourceFilenames(
|
| + filepath,
|
| + allow_external_script,
|
| + rewrite_function,
|
| + filename_expansion_function=filename_expansion_function))
|
| return ""
|
|
|
| - return pattern % InlineToString(filepath, grd_node, allow_external_script)
|
| + return pattern % InlineToString(
|
| + filepath, grd_node, allow_external_script,
|
| + filename_expansion_function=filename_expansion_function)
|
|
|
| def InlineIncludeFiles(src_match):
|
| """Helper function to directly inline generic external files (without
|
| @@ -338,7 +352,7 @@
|
|
|
|
|
| def InlineToString(input_filename, grd_node, allow_external_script=False,
|
| - rewrite_function=None):
|
| + rewrite_function=None, filename_expansion_function=None):
|
| """Inlines the resources in a specified file and returns it as a string.
|
|
|
| Args:
|
| @@ -348,10 +362,12 @@
|
| the inlined data as a string
|
| """
|
| try:
|
| - return DoInline(input_filename,
|
| - grd_node,
|
| - allow_external_script=allow_external_script,
|
| - rewrite_function=rewrite_function).inlined_data
|
| + return DoInline(
|
| + input_filename,
|
| + grd_node,
|
| + allow_external_script=allow_external_script,
|
| + rewrite_function=rewrite_function,
|
| + filename_expansion_function=filename_expansion_function).inlined_data
|
| except IOError, e:
|
| raise Exception("Failed to open %s while trying to flatten %s. (%s)" %
|
| (e.filename, input_filename, e.strerror))
|
| @@ -378,14 +394,17 @@
|
|
|
| def GetResourceFilenames(filename,
|
| allow_external_script=False,
|
| - rewrite_function=None):
|
| + rewrite_function=None,
|
| + filename_expansion_function=None):
|
| """For a grd file, returns a set of all the files that would be inline."""
|
| try:
|
| - return DoInline(filename,
|
| - None,
|
| - names_only=True,
|
| - allow_external_script=allow_external_script,
|
| - rewrite_function=rewrite_function).inlined_files
|
| + return DoInline(
|
| + filename,
|
| + None,
|
| + names_only=True,
|
| + allow_external_script=allow_external_script,
|
| + rewrite_function=rewrite_function,
|
| + filename_expansion_function=filename_expansion_function).inlined_files
|
| except IOError, e:
|
| raise Exception("Failed to open %s while trying to flatten %s. (%s)" %
|
| (e.filename, filename, e.strerror))
|
|
|