| 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 os.path | 5 import os.path |
| 6 | 6 |
| 7 from json_parse import OrderedDict | 7 from json_parse import OrderedDict |
| 8 from memoize import memoize | 8 from memoize import memoize |
| 9 | 9 |
| 10 | 10 |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 98 self.name = json['namespace'] | 98 self.name = json['namespace'] |
| 99 if 'description' not in json: | 99 if 'description' not in json: |
| 100 # TODO(kalman): Go back to throwing an error here. | 100 # TODO(kalman): Go back to throwing an error here. |
| 101 print('%s must have a "description" field. This will appear ' | 101 print('%s must have a "description" field. This will appear ' |
| 102 'on the API summary page.' % self.name) | 102 'on the API summary page.' % self.name) |
| 103 json['description'] = '' | 103 json['description'] = '' |
| 104 self.description = json['description'] | 104 self.description = json['description'] |
| 105 self.unix_name = UnixName(self.name) | 105 self.unix_name = UnixName(self.name) |
| 106 self.source_file = source_file | 106 self.source_file = source_file |
| 107 self.source_file_dir, self.source_file_filename = os.path.split(source_file) | 107 self.source_file_dir, self.source_file_filename = os.path.split(source_file) |
| 108 self.short_filename = os.path.basename(source_file).split('.')[0] |
| 108 self.parent = None | 109 self.parent = None |
| 109 self.platforms = _GetPlatforms(json) | 110 self.platforms = _GetPlatforms(json) |
| 110 toplevel_origin = Origin(from_client=True, from_json=True) | 111 toplevel_origin = Origin(from_client=True, from_json=True) |
| 111 self.types = _GetTypes(self, json, self, toplevel_origin) | 112 self.types = _GetTypes(self, json, self, toplevel_origin) |
| 112 self.functions = _GetFunctions(self, json, self) | 113 self.functions = _GetFunctions(self, json, self) |
| 113 self.events = _GetEvents(self, json, self) | 114 self.events = _GetEvents(self, json, self) |
| 114 self.properties = _GetProperties(self, json, self, toplevel_origin) | 115 self.properties = _GetProperties(self, json, self, toplevel_origin) |
| 115 if include_compiler_options: | 116 if include_compiler_options: |
| 116 self.compiler_options = json.get('compiler_options', {}) | 117 self.compiler_options = json.get('compiler_options', {}) |
| 117 else: | 118 else: |
| 118 self.compiler_options = {} | 119 self.compiler_options = {} |
| 119 self.documentation_options = json.get('documentation_options', {}) | 120 self.documentation_options = json.get('documentation_options', {}) |
| 121 if 'allow_custom_filename' in json: |
| 122 self.allow_custom_filename = json['allow_custom_filename'] |
| 123 else: |
| 124 self.allow_custom_filename = False |
| 120 | 125 |
| 121 | 126 |
| 122 class Origin(object): | 127 class Origin(object): |
| 123 """Stores the possible origin of model object as a pair of bools. These are: | 128 """Stores the possible origin of model object as a pair of bools. These are: |
| 124 | 129 |
| 125 |from_client| indicating that instances can originate from users of | 130 |from_client| indicating that instances can originate from users of |
| 126 generated code (for example, function results), or | 131 generated code (for example, function results), or |
| 127 |from_json| indicating that instances can originate from the JSON (for | 132 |from_json| indicating that instances can originate from the JSON (for |
| 128 example, function parameters) | 133 example, function parameters) |
| 129 | 134 |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 180 if json_type == 'array': | 185 if json_type == 'array': |
| 181 self.property_type = PropertyType.ARRAY | 186 self.property_type = PropertyType.ARRAY |
| 182 self.item_type = Type( | 187 self.item_type = Type( |
| 183 self, '%sType' % name, json['items'], namespace, origin) | 188 self, '%sType' % name, json['items'], namespace, origin) |
| 184 elif '$ref' in json: | 189 elif '$ref' in json: |
| 185 self.property_type = PropertyType.REF | 190 self.property_type = PropertyType.REF |
| 186 self.ref_type = json['$ref'] | 191 self.ref_type = json['$ref'] |
| 187 elif 'enum' in json and json_type == 'string': | 192 elif 'enum' in json and json_type == 'string': |
| 188 self.property_type = PropertyType.ENUM | 193 self.property_type = PropertyType.ENUM |
| 189 self.enum_values = [EnumValue(value) for value in json['enum']] | 194 self.enum_values = [EnumValue(value) for value in json['enum']] |
| 195 self.cpp_omit_enum_type = 'cpp_omit_enum_type' in json |
| 190 elif json_type == 'any': | 196 elif json_type == 'any': |
| 191 self.property_type = PropertyType.ANY | 197 self.property_type = PropertyType.ANY |
| 192 elif json_type == 'binary': | 198 elif json_type == 'binary': |
| 193 self.property_type = PropertyType.BINARY | 199 self.property_type = PropertyType.BINARY |
| 194 elif json_type == 'boolean': | 200 elif json_type == 'boolean': |
| 195 self.property_type = PropertyType.BOOLEAN | 201 self.property_type = PropertyType.BOOLEAN |
| 196 elif json_type == 'integer': | 202 elif json_type == 'integer': |
| 197 self.property_type = PropertyType.INTEGER | 203 self.property_type = PropertyType.INTEGER |
| 198 elif (json_type == 'double' or | 204 elif (json_type == 'double' or |
| 199 json_type == 'number'): | 205 json_type == 'number'): |
| (...skipping 366 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 566 # Sanity check: platforms should not be an empty list. | 572 # Sanity check: platforms should not be an empty list. |
| 567 if not json['platforms']: | 573 if not json['platforms']: |
| 568 raise ValueError('"platforms" cannot be an empty list') | 574 raise ValueError('"platforms" cannot be an empty list') |
| 569 platforms = [] | 575 platforms = [] |
| 570 for platform_name in json['platforms']: | 576 for platform_name in json['platforms']: |
| 571 for platform_enum in _Enum.GetAll(Platforms): | 577 for platform_enum in _Enum.GetAll(Platforms): |
| 572 if platform_name == platform_enum.name: | 578 if platform_name == platform_enum.name: |
| 573 platforms.append(platform_enum) | 579 platforms.append(platform_enum) |
| 574 break | 580 break |
| 575 return platforms | 581 return platforms |
| OLD | NEW |