OLD | NEW |
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 import itertools | 6 import itertools |
7 import json | 7 import json |
8 import os.path | 8 import os.path |
9 import re | 9 import re |
10 import sys | 10 import sys |
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
157 ''' | 157 ''' |
158 def __init__(self, member_node): | 158 def __init__(self, member_node): |
159 self.node = member_node | 159 self.node = member_node |
160 | 160 |
161 def process(self, callbacks): | 161 def process(self, callbacks): |
162 properties = OrderedDict() | 162 properties = OrderedDict() |
163 name = self.node.GetName() | 163 name = self.node.GetName() |
164 for property_name in ('OPTIONAL', 'nodoc', 'nocompile', 'nodart'): | 164 for property_name in ('OPTIONAL', 'nodoc', 'nocompile', 'nodart'): |
165 if self.node.GetProperty(property_name): | 165 if self.node.GetProperty(property_name): |
166 properties[property_name.lower()] = True | 166 properties[property_name.lower()] = True |
| 167 for option_name, sanitizer in [ |
| 168 ('maxListeners', int), |
| 169 ('supportsFilters', lambda s: s == 'true'), |
| 170 ('supportsListeners', lambda s: s == 'true'), |
| 171 ('supportsRules', lambda s: s == 'true')]: |
| 172 if self.node.GetProperty(option_name): |
| 173 if 'options' not in properties: |
| 174 properties['options'] = {} |
| 175 properties['options'][option_name] = sanitizer(self.node.GetProperty( |
| 176 option_name)) |
167 is_function = False | 177 is_function = False |
168 parameter_comments = OrderedDict() | 178 parameter_comments = OrderedDict() |
169 for node in self.node.children: | 179 for node in self.node.children: |
170 if node.cls == 'Comment': | 180 if node.cls == 'Comment': |
171 (parent_comment, parameter_comments) = ProcessComment(node.GetName()) | 181 (parent_comment, parameter_comments) = ProcessComment(node.GetName()) |
172 properties['description'] = parent_comment | 182 properties['description'] = parent_comment |
173 elif node.cls == 'Callspec': | 183 elif node.cls == 'Callspec': |
174 is_function = True | 184 is_function = True |
175 name, parameters, return_type = (Callspec(node, parameter_comments) | 185 name, parameters, return_type = (Callspec(node, parameter_comments) |
176 .process(callbacks)) | 186 .process(callbacks)) |
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
393 ''' | 403 ''' |
394 Dump a json serialization of parse result for the IDL files whose names | 404 Dump a json serialization of parse result for the IDL files whose names |
395 were passed in on the command line. | 405 were passed in on the command line. |
396 ''' | 406 ''' |
397 for filename in sys.argv[1:]: | 407 for filename in sys.argv[1:]: |
398 schema = Load(filename) | 408 schema = Load(filename) |
399 print json.dumps(schema, indent=2) | 409 print json.dumps(schema, indent=2) |
400 | 410 |
401 if __name__ == '__main__': | 411 if __name__ == '__main__': |
402 Main() | 412 Main() |
OLD | NEW |