summaryrefslogtreecommitdiffstats
path: root/tools/grit/grit/node/include.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/grit/grit/node/include.py')
-rw-r--r--tools/grit/grit/node/include.py95
1 files changed, 95 insertions, 0 deletions
diff --git a/tools/grit/grit/node/include.py b/tools/grit/grit/node/include.py
new file mode 100644
index 0000000..0e74865
--- /dev/null
+++ b/tools/grit/grit/node/include.py
@@ -0,0 +1,95 @@
+#!/usr/bin/python2.4
+# Copyright 2008, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+'''Handling of the <include> element.
+'''
+
+
+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 _IsValidChild(self, child):
+ return False
+
+ def MandatoryAttributes(self):
+ return ['name', 'type', 'file']
+
+ def DefaultAttributes(self):
+ return {'translateable' : 'true',
+ 'generateid': 'true',
+ 'filenameonly': 'false',
+ 'relativepath': 'false',
+ }
+
+ def ItemFormatter(self, t):
+ if t == 'rc_header':
+ return grit.format.rc_header.Item()
+ elif (t in ['rc_all', 'rc_translateable', 'rc_nontranslateable'] and
+ self.SatisfiesOutputCondition()):
+ return grit.format.rc.RcInclude(self.attrs['type'].upper(),
+ self.attrs['filenameonly'] == 'true',
+ self.attrs['relativepath'] == 'true')
+ else:
+ return super(type(self), self).ItemFormatter(t)
+
+ 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.
+ '''
+ return self.FilenameToOpen()
+
+ # static method
+ def Construct(parent, name, type, file, translateable=True,
+ filenameonly=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)
+ 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('relativepath', relativepath)
+ node.EndParsing()
+ return node
+ Construct = staticmethod(Construct)