| Index: grit/node/include.py
|
| ===================================================================
|
| --- grit/node/include.py (revision 202)
|
| +++ grit/node/include.py (working copy)
|
| @@ -1,152 +0,0 @@
|
| -#!/usr/bin/env python
|
| -# Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| -# Use of this source code is governed by a BSD-style license that can be
|
| -# found in the LICENSE file.
|
| -
|
| -"""Handling of the <include> element.
|
| -"""
|
| -
|
| -import os
|
| -
|
| -import grit.format.html_inline
|
| -import grit.format.rc_header
|
| -import grit.format.rc
|
| -
|
| -from grit.node import base
|
| -from grit import util
|
| -
|
| -class IncludeNode(base.Node):
|
| - """An <include> element."""
|
| - def __init__(self):
|
| - super(IncludeNode, self).__init__()
|
| -
|
| - # Cache flattened data so that we don't flatten the same file
|
| - # multiple times.
|
| - self._flattened_data = None
|
| - # Also keep track of the last filename we flattened to, so we can
|
| - # avoid doing it more than once.
|
| - self._last_flat_filename = None
|
| -
|
| - def _IsValidChild(self, child):
|
| - return False
|
| -
|
| - def _GetFlattenedData(self, allow_external_script=False):
|
| - if not self._flattened_data:
|
| - filename = self.ToRealPath(self.GetInputPath())
|
| - self._flattened_data = (
|
| - grit.format.html_inline.InlineToString(filename, self,
|
| - allow_external_script=allow_external_script))
|
| - return self._flattened_data
|
| -
|
| - def MandatoryAttributes(self):
|
| - return ['name', 'type', 'file']
|
| -
|
| - def DefaultAttributes(self):
|
| - return {'translateable' : 'true',
|
| - 'generateid': 'true',
|
| - 'filenameonly': 'false',
|
| - 'mkoutput': 'false',
|
| - 'flattenhtml': 'false',
|
| - 'allowexternalscript': 'false',
|
| - 'relativepath': 'false',
|
| - 'use_base_dir': 'true',
|
| - }
|
| -
|
| - def GetInputPath(self):
|
| - # Do not mess with absolute paths, that would make them invalid.
|
| - if os.path.isabs(os.path.expandvars(self.attrs['file'])):
|
| - return self.attrs['file']
|
| -
|
| - # We have no control over code that calles ToRealPath later, so convert
|
| - # the path to be relative against our basedir.
|
| - if self.attrs.get('use_base_dir', 'true') != 'true':
|
| - return os.path.relpath(self.attrs['file'], self.GetRoot().GetBaseDir())
|
| -
|
| - return self.attrs['file']
|
| -
|
| - def FileForLanguage(self, lang, output_dir):
|
| - """Returns the file for the specified language. This allows us to return
|
| - different files for different language variants of the include file.
|
| - """
|
| - input_path = self.GetInputPath()
|
| - if input_path is None:
|
| - return None
|
| -
|
| - return self.ToRealPath(input_path)
|
| -
|
| - def GetDataPackPair(self, lang, encoding):
|
| - """Returns a (id, string) pair that represents the resource id and raw
|
| - bytes of the data. This is used to generate the data pack data file.
|
| - """
|
| - # TODO(benrg/joi): Move this and other implementations of GetDataPackPair
|
| - # to grit.format.data_pack?
|
| - from grit.format import rc_header
|
| - id_map = rc_header.GetIds(self.GetRoot())
|
| - id = id_map[self.GetTextualIds()[0]]
|
| - if self.attrs['flattenhtml'] == 'true':
|
| - allow_external_script = self.attrs['allowexternalscript'] == 'true'
|
| - data = self._GetFlattenedData(allow_external_script=allow_external_script)
|
| - else:
|
| - filename = self.ToRealPath(self.GetInputPath())
|
| - data = util.ReadFile(filename, util.BINARY)
|
| -
|
| - # Include does not care about the encoding, because it only returns binary
|
| - # data.
|
| - return id, data
|
| -
|
| - def Process(self, output_dir):
|
| - """Rewrite file references to be base64 encoded data URLs. The new file
|
| - will be written to output_dir and the name of the new file is returned."""
|
| - filename = self.ToRealPath(self.GetInputPath())
|
| - flat_filename = os.path.join(output_dir,
|
| - self.attrs['name'] + '_' + os.path.basename(filename))
|
| -
|
| - if self._last_flat_filename == flat_filename:
|
| - return
|
| -
|
| - with open(flat_filename, 'wb') as outfile:
|
| - outfile.write(self._GetFlattenedData())
|
| -
|
| - self._last_flat_filename = flat_filename
|
| - return os.path.basename(flat_filename)
|
| -
|
| - def GetHtmlResourceFilenames(self):
|
| - """Returns a set of all filenames inlined by this file."""
|
| - allow_external_script = self.attrs['allowexternalscript'] == 'true'
|
| - return grit.format.html_inline.GetResourceFilenames(
|
| - self.ToRealPath(self.GetInputPath()),
|
| - allow_external_script=allow_external_script)
|
| -
|
| - def IsResourceMapSource(self):
|
| - return True
|
| -
|
| - def GeneratesResourceMapEntry(self, output_all_resource_defines,
|
| - is_active_descendant):
|
| - # includes always generate resource entries.
|
| - if output_all_resource_defines:
|
| - return True
|
| - return is_active_descendant
|
| -
|
| - @staticmethod
|
| - def Construct(parent, name, type, file, translateable=True,
|
| - filenameonly=False, mkoutput=False, relativepath=False):
|
| - """Creates a new node which is a child of 'parent', with attributes set
|
| - by parameters of the same name.
|
| - """
|
| - # Convert types to appropriate strings
|
| - translateable = util.BoolToString(translateable)
|
| - filenameonly = util.BoolToString(filenameonly)
|
| - mkoutput = util.BoolToString(mkoutput)
|
| - relativepath = util.BoolToString(relativepath)
|
| -
|
| - node = IncludeNode()
|
| - node.StartParsing('include', parent)
|
| - node.HandleAttribute('name', name)
|
| - node.HandleAttribute('type', type)
|
| - node.HandleAttribute('file', file)
|
| - node.HandleAttribute('translateable', translateable)
|
| - node.HandleAttribute('filenameonly', filenameonly)
|
| - node.HandleAttribute('mkoutput', mkoutput)
|
| - node.HandleAttribute('relativepath', relativepath)
|
| - node.EndParsing()
|
| - return node
|
|
|