OLD | NEW |
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 import copy | 5 import copy |
6 import logging | 6 import logging |
7 import os | 7 import os |
8 | 8 |
9 import third_party.json_schema_compiler.model as model | 9 import third_party.json_schema_compiler.model as model |
10 | 10 |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
62 'properties': self._GenerateProperties(self._namespace.properties) | 62 'properties': self._GenerateProperties(self._namespace.properties) |
63 } | 63 } |
64 except Exception as e: | 64 except Exception as e: |
65 logging.info(e) | 65 logging.info(e) |
66 | 66 |
67 def _GenerateType(self, type_): | 67 def _GenerateType(self, type_): |
68 type_dict = { | 68 type_dict = { |
69 'name': type_.name, | 69 'name': type_.name, |
70 'description': type_.description, | 70 'description': type_.description, |
71 'properties': self._GenerateProperties(type_.properties), | 71 'properties': self._GenerateProperties(type_.properties), |
72 'functions': self._GenerateFunctions(type_.functions) | 72 'functions': self._GenerateFunctions(type_.functions), |
| 73 'events': map(self._GenerateEvent, type_.events.values()) |
73 } | 74 } |
74 self._RenderTypeInformation(type_, type_dict) | 75 self._RenderTypeInformation(type_, type_dict) |
75 return type_dict | 76 return type_dict |
76 | 77 |
77 def _GenerateFunctions(self, functions): | 78 def _GenerateFunctions(self, functions): |
78 return map(self._GenerateFunction, functions.values()) | 79 return map(self._GenerateFunction, functions.values()) |
79 | 80 |
80 def _GenerateFunction(self, function): | 81 def _GenerateFunction(self, function): |
81 function_dict = { | 82 function_dict = { |
82 'name': function.name, | 83 'name': function.name, |
(...skipping 17 matching lines...) Expand all Loading... |
100 'name': event.name, | 101 'name': event.name, |
101 'description': event.description, | 102 'description': event.description, |
102 'parameters': map(self._GenerateProperty, event.params) | 103 'parameters': map(self._GenerateProperty, event.params) |
103 } | 104 } |
104 if len(event_dict['parameters']) > 0: | 105 if len(event_dict['parameters']) > 0: |
105 event_dict['parameters'][-1]['last'] = True | 106 event_dict['parameters'][-1]['last'] = True |
106 return event_dict | 107 return event_dict |
107 | 108 |
108 def _GenerateCallback(self, callback): | 109 def _GenerateCallback(self, callback): |
109 if not callback: | 110 if not callback: |
110 return {} | 111 return None |
111 callback_dict = { | 112 callback_dict = { |
112 'name': 'callback', | 113 'name': 'callback', |
113 'description': callback.description, | 114 'description': callback.description, |
114 'simple_type': {'simple_type': 'function'}, | 115 'simple_type': {'simple_type': 'function'}, |
115 'optional': callback.optional, | 116 'optional': callback.optional, |
116 'parameters': [] | 117 'parameters': [] |
117 } | 118 } |
118 for param in callback.params: | 119 for param in callback.params: |
119 callback_dict['parameters'].append(self._GenerateProperty(param)) | 120 callback_dict['parameters'].append(self._GenerateProperty(param)) |
120 if (len(callback_dict['parameters']) > 0): | 121 if (len(callback_dict['parameters']) > 0): |
(...skipping 21 matching lines...) Expand all Loading... |
142 return property_dict | 143 return property_dict |
143 | 144 |
144 def _RenderTypeInformation(self, property_, dst_dict): | 145 def _RenderTypeInformation(self, property_, dst_dict): |
145 if property_.type_ == model.PropertyType.CHOICES: | 146 if property_.type_ == model.PropertyType.CHOICES: |
146 dst_dict['choices'] = map(self._GenerateProperty, | 147 dst_dict['choices'] = map(self._GenerateProperty, |
147 property_.choices.values()) | 148 property_.choices.values()) |
148 # We keep track of which is last for knowing when to add "or" between | 149 # We keep track of which is last for knowing when to add "or" between |
149 # choices in templates. | 150 # choices in templates. |
150 if len(dst_dict['choices']) > 0: | 151 if len(dst_dict['choices']) > 0: |
151 dst_dict['choices'][-1]['last'] = True | 152 dst_dict['choices'][-1]['last'] = True |
| 153 elif property_.type_ == model.PropertyType.ADDITIONAL_PROPERTIES: |
| 154 dst_dict['additional_properties'] = True |
152 elif property_.type_ == model.PropertyType.REF: | 155 elif property_.type_ == model.PropertyType.REF: |
153 dst_dict['link'] = _GetLinkToRefType(self._namespace.name, | 156 dst_dict['link'] = _GetLinkToRefType(self._namespace.name, |
154 property_.ref_type) | 157 property_.ref_type) |
155 elif property_.type_ == model.PropertyType.ARRAY: | 158 elif property_.type_ == model.PropertyType.ARRAY: |
156 dst_dict['array'] = self._GenerateProperty(property_.item_type) | 159 dst_dict['array'] = self._GenerateProperty(property_.item_type) |
157 elif property_.type_ == model.PropertyType.ENUM: | 160 elif property_.type_ == model.PropertyType.ENUM: |
158 dst_dict['enum_values'] = [] | 161 dst_dict['enum_values'] = [] |
159 for enum_value in property_.enum_values: | 162 for enum_value in property_.enum_values: |
160 dst_dict['enum_values'].append({'name': enum_value}) | 163 dst_dict['enum_values'].append({'name': enum_value}) |
161 if len(dst_dict['enum_values']) > 0: | 164 if len(dst_dict['enum_values']) > 0: |
162 dst_dict['enum_values'][-1]['last'] = True | 165 dst_dict['enum_values'][-1]['last'] = True |
163 elif property_.instance_of: | 166 elif property_.instance_of: |
164 dst_dict['simple_type'] = property_.instance_of.lower() | 167 dst_dict['simple_type'] = property_.instance_of.lower() |
165 else: | 168 else: |
166 dst_dict['simple_type'] = property_.type_.name.lower() | 169 dst_dict['simple_type'] = property_.type_.name.lower() |
OLD | NEW |