| Index: ppapi/generators/idl_propertynode.py
|
| diff --git a/ppapi/generators/idl_propertynode.py b/ppapi/generators/idl_propertynode.py
|
| index 33837a3cefa98f90a94249fbb15ded53fefe85df..e15354ad0a4d78be2cb6782ae3507f5cb87356ec 100755
|
| --- a/ppapi/generators/idl_propertynode.py
|
| +++ b/ppapi/generators/idl_propertynode.py
|
| @@ -8,7 +8,6 @@ import re
|
| import sys
|
|
|
| from idl_log import ErrOut, InfoOut, WarnOut
|
| -from idl_option import GetOption, Option, ParseOptions
|
|
|
| #
|
| # IDLPropertyNode
|
| @@ -22,11 +21,6 @@ class IDLPropertyNode(object):
|
| self.parents = []
|
| self.property_map = {}
|
|
|
| - def Error(self, msg):
|
| - name = self.GetProperty('NAME', 'Unknown')
|
| - parents = [parent.GetProperty('NAME', '???') for parent in self.parents]
|
| - ErrOut.Log('%s [%s] : %s' % (name, ' '.join(parents), msg))
|
| -
|
| def AddParent(self, parent):
|
| assert parent
|
| self.parents.append(parent)
|
| @@ -34,56 +28,26 @@ class IDLPropertyNode(object):
|
| def SetProperty(self, name, val):
|
| self.property_map[name] = val
|
|
|
| - def _GetProperty_(self, name):
|
| + def GetProperty(self, name):
|
| # Check locally for the property, and return it if found.
|
| prop = self.property_map.get(name, None)
|
| - if prop is not None: return prop
|
| + if prop is not None:
|
| + return prop
|
| # If not, seach parents in order
|
| for parent in self.parents:
|
| prop = parent.GetProperty(name)
|
| - if prop is not None: return prop
|
| + if prop is not None:
|
| + return prop
|
| # Otherwise, it can not be found.
|
| return None
|
|
|
| - def GetProperty(self, name, default=None):
|
| - prop = self._GetProperty_(name)
|
| - if prop is None:
|
| - return default
|
| - else:
|
| - return prop
|
| -
|
| - def GetPropertyLocal(self, name, default=None):
|
| - # Search for the property, but only locally, returning the
|
| - # default if not found.
|
| - prop = self.property_map.get(name, default)
|
| - return prop
|
| -
|
| - # Regular expression to parse property keys in a string such that a string
|
| - # "My string $NAME$" will find the key "NAME".
|
| - regex_var = re.compile('(?P<src>[^\\$]+)|(?P<key>\\$\\w+\\$)')
|
| + def GetPropertyLocal(self, name):
|
| + # Search for the property, but only locally.
|
| + return self.property_map.get(name, None)
|
|
|
| def GetPropertyList(self):
|
| return self.property_map.keys()
|
|
|
| - # Recursively expands text keys in the form of $KEY$ with the value
|
| - # of the property of the same name. Since this is done recursively
|
| - # one property can be defined in terms of another.
|
| - def Replace(self, text):
|
| - itr = IDLPropertyNode.regex_var.finditer(text)
|
| - out = ''
|
| - for m in itr:
|
| - (start, stop) = m.span()
|
| - if m.lastgroup == 'src':
|
| - out += text[start:stop]
|
| - if m.lastgroup == 'key':
|
| - key = text[start+1:stop-1]
|
| - val = self.GetProperty(key, None)
|
| - if not val:
|
| - self.Error('No property "%s"' % key)
|
| - out += self.Replace(str(val))
|
| - return out
|
| -
|
| -
|
| #
|
| # Testing functions
|
| #
|
| @@ -91,16 +55,18 @@ class IDLPropertyNode(object):
|
| # Build a property node, setting the properties including a name, and
|
| # associate the children with this new node.
|
| #
|
| -def BuildNode(name, props, children=[], parents=[]):
|
| +def BuildNode(name, props, children=None, parents=None):
|
| node = IDLPropertyNode()
|
| node.SetProperty('NAME', name)
|
| for prop in props:
|
| toks = prop.split('=')
|
| node.SetProperty(toks[0], toks[1])
|
| - for child in children:
|
| - child.AddParent(node)
|
| - for parent in parents:
|
| - node.AddParent(parent)
|
| + if children:
|
| + for child in children:
|
| + child.AddParent(node)
|
| + if parents:
|
| + for parent in parents:
|
| + node.AddParent(parent)
|
| return node
|
|
|
| def ExpectProp(node, name, val):
|
| @@ -128,63 +94,14 @@ def PropertyTest():
|
| errors += ExpectProp(right, 'Left', 'Top')
|
| errors += ExpectProp(right, 'Right', 'Right')
|
|
|
| - if not errors: InfoOut.Log('Passed PropertyTest')
|
| - return errors
|
| -
|
| -
|
| -def ExpectText(node, text, val):
|
| - found = node.Replace(text)
|
| - if found != val:
|
| - ErrOut.Log('Got replacement %s expecting %s' % (found, val))
|
| - return 1
|
| - return 0
|
| -
|
| -#
|
| -# Verify text replacement
|
| -#
|
| -def ReplaceTest():
|
| - errors = 0
|
| - left = BuildNode('Left', ['Left=Left'])
|
| - right = BuildNode('Right', ['Right=Right'])
|
| - top = BuildNode('Top', ['Left=Top', 'Right=Top'], [left, right])
|
| -
|
| - errors += ExpectText(top, '$Left$', 'Top')
|
| - errors += ExpectText(top, '$Right$', 'Top')
|
| -
|
| - errors += ExpectText(left, '$Left$', 'Left')
|
| - errors += ExpectText(left, '$Right$', 'Top')
|
| -
|
| - errors += ExpectText(right, '$Left$', 'Top')
|
| - errors += ExpectText(right, '$Right$', 'Right')
|
| -
|
| - if not errors: InfoOut.Log('Passed ReplaceTest')
|
| - return errors
|
| -
|
| -
|
| -def MultiParentTest():
|
| - errors = 0
|
| -
|
| - parent1 = BuildNode('parent1', ['PARENT1=parent1', 'TOPMOST=$TOP$'])
|
| - parent2 = BuildNode('parent2', ['PARENT1=parent2', 'PARENT2=parent2'])
|
| - child = BuildNode('child', ['CHILD=child'], parents=[parent1, parent2])
|
| - BuildNode('top', ['TOP=top'], children=[parent1])
|
| -
|
| - errors += ExpectText(child, '$CHILD$', 'child')
|
| - errors += ExpectText(child, '$PARENT1$', 'parent1')
|
| - errors += ExpectText(child, '$PARENT2$', 'parent2')
|
| -
|
| - # Verify recursive resolution
|
| - errors += ExpectText(child, '$TOPMOST$', 'top')
|
| -
|
| - if not errors: InfoOut.Log('Passed MultiParentTest')
|
| + if not errors:
|
| + InfoOut.Log('Passed PropertyTest')
|
| return errors
|
|
|
|
|
| def Main():
|
| errors = 0
|
| errors += PropertyTest()
|
| - errors += ReplaceTest()
|
| - errors += MultiParentTest()
|
|
|
| if errors:
|
| ErrOut.Log('IDLNode failed with %d errors.' % errors)
|
|
|