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

Side by Side Diff: grit/node/misc.py

Issue 11155024: If-then-else support for GRIT (Closed) Base URL: https://grit-i18n.googlecode.com/svn/trunk
Patch Set: Created 8 years, 2 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « grit/node/mapping.py ('k') | grit/node/misc_unittest.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 """Miscellaneous node types. 6 """Miscellaneous node types.
7 """ 7 """
8 8
9 import os.path 9 import os.path
10 import re 10 import re
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 return self.parent._IsValidChild(child) 79 return self.parent._IsValidChild(child)
80 80
81 81
82 class IfNode(SplicingNode): 82 class IfNode(SplicingNode):
83 """A node for conditional inclusion of resources. 83 """A node for conditional inclusion of resources.
84 """ 84 """
85 85
86 def MandatoryAttributes(self): 86 def MandatoryAttributes(self):
87 return ['expr'] 87 return ['expr']
88 88
89 def _IsValidChild(self, child):
90 return (isinstance(child, (ThenNode, ElseNode)) or
91 super(IfNode, self)._IsValidChild(child))
92
93 def EndParsing(self):
94 children = self.children
95 if any(isinstance(node, (ThenNode, ElseNode)) for node in children):
96 if (len(children) != 2 or not isinstance(children[0], ThenNode) or
97 not isinstance(children[1], ElseNode)):
98 raise exception.UnexpectedChild(
99 '<if> element must be <if><then>...</then><else>...</else></if>')
100
89 def ActiveChildren(self): 101 def ActiveChildren(self):
90 if not self.EvaluateCondition(self.attrs['expr']): 102 cond = self.EvaluateCondition(self.attrs['expr'])
91 return [] 103 if len(self.children) == 2 and isinstance(self.children[0], ThenNode):
Jói 2012/10/16 11:21:11 This is slightly hard to follow; I think a comment
92 return super(IfNode, self).ActiveChildren() 104 return self.children[0 if cond else 1].ActiveChildren()
105 else:
106 return super(IfNode, self).ActiveChildren() if cond else []
107
108
109 class ThenNode(SplicingNode):
110 """A <then> node. Can only appear directly inside an <if> node."""
111 pass
112
113
114 class ElseNode(SplicingNode):
115 """An <else> node. Can only appear directly inside an <if> node."""
116 pass
93 117
94 118
95 class PartNode(SplicingNode): 119 class PartNode(SplicingNode):
96 """A node for inclusion of sub-grd (*.grp) files. 120 """A node for inclusion of sub-grd (*.grp) files.
97 """ 121 """
98 122
99 def __init__(self): 123 def __init__(self):
100 super(PartNode, self).__init__() 124 super(PartNode, self).__init__()
101 self.started_inclusion = False 125 self.started_inclusion = False
102 126
(...skipping 372 matching lines...) Expand 10 before | Expand all | Expand 10 after
475 by parameters of the same name. 499 by parameters of the same name.
476 """ 500 """
477 node = IdentifierNode() 501 node = IdentifierNode()
478 node.StartParsing('identifier', parent) 502 node.StartParsing('identifier', parent)
479 node.HandleAttribute('name', name) 503 node.HandleAttribute('name', name)
480 node.HandleAttribute('id', id) 504 node.HandleAttribute('id', id)
481 node.HandleAttribute('comment', comment) 505 node.HandleAttribute('comment', comment)
482 node.HandleAttribute('systemid', systemid) 506 node.HandleAttribute('systemid', systemid)
483 node.EndParsing() 507 node.EndParsing()
484 return node 508 return node
OLDNEW
« no previous file with comments | « grit/node/mapping.py ('k') | grit/node/misc_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698