| Index: mojo/public/tools/bindings/pylib/mojom/parse/translate.py
|
| diff --git a/mojo/public/tools/bindings/pylib/mojom/parse/translate.py b/mojo/public/tools/bindings/pylib/mojom/parse/translate.py
|
| index cd186f406f355572f41be5ffc6a83bce0d031000..698f963c17eacef8633c0b91903e53a497900488 100644
|
| --- a/mojo/public/tools/bindings/pylib/mojom/parse/translate.py
|
| +++ b/mojo/public/tools/bindings/pylib/mojom/parse/translate.py
|
| @@ -51,19 +51,13 @@ def _MapKind(kind):
|
| return map_to_kind[kind]
|
| return 'x:' + kind
|
|
|
| -def _MapAttributes(attributes):
|
| - if not attributes:
|
| +def _AttributeListToDict(attribute_list):
|
| + if attribute_list is None:
|
| return {}
|
| - return dict([(attribute[1], attribute[2])
|
| - for attribute in attributes if attribute[0] == 'ATTRIBUTE'])
|
| -
|
| -def _GetAttribute(attributes, name):
|
| - out = None
|
| - if attributes:
|
| - for attribute in attributes:
|
| - if attribute[0] == 'ATTRIBUTE' and attribute[1] == name:
|
| - out = attribute[2]
|
| - return out
|
| + assert isinstance(attribute_list, ast.AttributeList)
|
| + # TODO(vtl): Check for duplicate keys here.
|
| + return dict([(attribute.key, attribute.value)
|
| + for attribute in attribute_list])
|
|
|
| def _MapField(tree):
|
| assert isinstance(tree[3], ast.Ordinal)
|
| @@ -97,7 +91,7 @@ def _MapEnumField(tree):
|
| def _MapStruct(tree):
|
| struct = {}
|
| struct['name'] = tree[1]
|
| - struct['attributes'] = _MapAttributes(tree[2])
|
| + struct['attributes'] = _AttributeListToDict(tree[2])
|
| struct['fields'] = _MapTree(_MapField, tree[3], 'FIELD')
|
| struct['enums'] = _MapTree(_MapEnum, tree[3], 'ENUM')
|
| struct['constants'] = _MapTree(_MapConstant, tree[3], 'CONST')
|
| @@ -106,7 +100,8 @@ def _MapStruct(tree):
|
| def _MapInterface(tree):
|
| interface = {}
|
| interface['name'] = tree[1]
|
| - interface['client'] = _GetAttribute(tree[2], 'Client')
|
| + interface['attributes'] = _AttributeListToDict(tree[2])
|
| + interface['client'] = interface['attributes'].get('Client')
|
| interface['methods'] = _MapTree(_MapMethod, tree[3], 'METHOD')
|
| interface['enums'] = _MapTree(_MapEnum, tree[3], 'ENUM')
|
| interface['constants'] = _MapTree(_MapConstant, tree[3], 'CONST')
|
| @@ -129,7 +124,7 @@ def _MapModule(tree, name):
|
| mojom = {}
|
| mojom['name'] = name
|
| mojom['namespace'] = tree[1]
|
| - mojom['attributes'] = _MapAttributes(tree[2])
|
| + mojom['attributes'] = _AttributeListToDict(tree[2])
|
| mojom['structs'] = _MapTree(_MapStruct, tree[3], 'STRUCT')
|
| mojom['interfaces'] = _MapTree(_MapInterface, tree[3], 'INTERFACE')
|
| mojom['enums'] = _MapTree(_MapEnum, tree[3], 'ENUM')
|
|
|