Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(213)

Unified Diff: grit/node/structure.py

Issue 9965022: Allow substitution of messages as variables in other messages. (Closed) Base URL: https://grit-i18n.googlecode.com/svn/trunk
Patch Set: Fix unit tests for policy writers. Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « grit/node/misc_unittest.py ('k') | grit/testdata/klonk.rc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: grit/node/structure.py
diff --git a/grit/node/structure.py b/grit/node/structure.py
index e7cda61ba8651ca2a4293af0df976bfacf57cb05..5b30037d1d2ec1860fb7137f68a2fb32b5449613 100644
--- a/grit/node/structure.py
+++ b/grit/node/structure.py
@@ -26,15 +26,6 @@ import grit.gather.txt
import grit.format.rc
import grit.format.rc_header
-# RTL languages
-# TODO(jennyz): remove this fixed set of RTL language array
-# when generic expand_variable code is added by grit team.
-_RTL_LANGS = [
- 'ar',
- 'iw',
- 'ur',
-]
-
# Type of the gatherer to use for each type attribute
_GATHERERS = {
'accelerators' : grit.gather.rc.Accelerators,
@@ -185,6 +176,21 @@ class StructureNode(base.Node):
return self.attrs['type'] in [
'tr_html', 'admin_template', 'txt', 'muppet', 'igoogle']
+ def ExpandVariables(self):
+ '''Variable expansion on structures is controlled by an XML attribute.
+
+ However, old files assume that expansion is always on for Rc files.
+
+ Returns:
+ A boolean.
+ '''
+ attrs = self.GetRoot().attrs
+ if 'grit_version' in attrs and attrs['grit_version'] > 1:
+ return self.attrs['expand_variables'] == 'true'
+ else:
+ return (self.attrs['expand_variables'] == 'true' or
+ self.attrs['file'].lower().endswith('.rc'))
+
def FileForLanguage(self, lang, output_dir, create_file=True,
return_if_not_generated=True):
'''Returns the filename of the file associated with this structure,
@@ -225,15 +231,11 @@ class StructureNode(base.Node):
file_object = util.WrapOutputStream(file(filename, 'wb'),
self._GetOutputEncoding())
file_contents = util.FixLineEnd(text, self.GetLineEnd())
- if self.attrs['expand_variables'] == 'true':
- file_contents = file_contents.replace('[GRITLANGCODE]', lang)
- # TODO(jennyz): remove this hard coded logic for expanding
- # [GRITDIR] variable for RTL languages when the generic
- # expand_variable code is added by grit team.
- if lang in _RTL_LANGS :
- file_contents = file_contents.replace('[GRITDIR]', 'dir="RTL"')
- else :
- file_contents = file_contents.replace('[GRITDIR]', 'dir="LTR"')
+ if self.ExpandVariables():
+ # Note that we reapply substitution a second time here.
+ # This is because a) we need to look inside placeholders
+ # b) the substitution values are language-dependent
+ file_contents = self.GetRoot().substituter.Substitute(file_contents)
if self._ShouldAddBom():
file_object.write(constants.BOM)
file_object.write(file_contents)
@@ -264,7 +266,7 @@ class StructureNode(base.Node):
'''
return self.attrs['output_encoding'].endswith('-sig')
- # static method
+ @staticmethod
def Construct(parent, name, type, file, encoding='cp1252'):
'''Creates a new node which is a child of 'parent', with attributes set
by parameters of the same name.
@@ -277,5 +279,14 @@ class StructureNode(base.Node):
node.HandleAttribute('encoding', encoding)
node.EndParsing()
return node
- Construct = staticmethod(Construct)
+
+ def SubstituteMessages(self, substituter):
+ '''Propagates substitution to gatherer.
+
+ Args:
+ substituter: a grit.util.Substituter object.
+ '''
+ assert self.gatherer
+ if self.ExpandVariables():
+ self.gatherer.SubstituteMessages(substituter)
« no previous file with comments | « grit/node/misc_unittest.py ('k') | grit/testdata/klonk.rc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698