OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright 2016 The Chromium Authors. All rights reserved. | 2 # Copyright 2016 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 math | 6 import math |
7 import sys | 7 import sys |
8 | 8 |
9 import json5_generator | 9 import json5_generator |
10 import template_expander | 10 import template_expander |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
80 """ | 80 """ |
81 Returns a dictionary of enums to be generated, enum name -> [list of enum va
lues] | 81 Returns a dictionary of enums to be generated, enum name -> [list of enum va
lues] |
82 """ | 82 """ |
83 enums = {} | 83 enums = {} |
84 for property_ in properties: | 84 for property_ in properties: |
85 # Only generate enums for keyword properties that use the default field_
storage_type. | 85 # Only generate enums for keyword properties that use the default field_
storage_type. |
86 if property_['keyword_only'] and property_['field_storage_type'] is None
: | 86 if property_['keyword_only'] and property_['field_storage_type'] is None
: |
87 enum_name = property_['type_name'] | 87 enum_name = property_['type_name'] |
88 # From the Blink style guide: Enum members should use InterCaps with
an initial capital letter. [names-enum-members] | 88 # From the Blink style guide: Enum members should use InterCaps with
an initial capital letter. [names-enum-members] |
89 enum_values = [('k' + camel_case(k)) for k in property_['keywords']] | 89 enum_values = [('k' + camel_case(k)) for k in property_['keywords']] |
| 90 |
| 91 if enum_name in enums: |
| 92 # There's an enum with the same name, check if the enum values a
re the same |
| 93 assert set(enums[enum_name]) == set(enum_values), \ |
| 94 ("'" + property_['name'] + "' can't have type_name '" + enum
_name + "' " |
| 95 "because it was used by a previous property, but with a dif
ferent set of keywords. " |
| 96 "Either give it a different name or ensure the keywords are
the same.") |
| 97 |
90 enums[enum_name] = enum_values | 98 enums[enum_name] = enum_values |
91 | 99 |
92 return enums | 100 return enums |
93 | 101 |
94 | 102 |
95 def _create_property_field(property_): | 103 def _create_property_field(property_): |
96 """ | 104 """ |
97 Create a property field from a CSS property and return the Field object. | 105 Create a property field from a CSS property and return the Field object. |
98 """ | 106 """ |
99 property_name = property_['name_for_methods'] | 107 property_name = property_['name_for_methods'] |
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
286 def generate_base_computed_style_constants(self): | 294 def generate_base_computed_style_constants(self): |
287 return { | 295 return { |
288 'properties': self._properties, | 296 'properties': self._properties, |
289 'enums': self._generated_enums, | 297 'enums': self._generated_enums, |
290 'fields': self._fields, | 298 'fields': self._fields, |
291 'expected_total_field_bytes': self._expected_total_field_bytes, | 299 'expected_total_field_bytes': self._expected_total_field_bytes, |
292 } | 300 } |
293 | 301 |
294 if __name__ == '__main__': | 302 if __name__ == '__main__': |
295 json5_generator.Maker(ComputedStyleBaseWriter).main() | 303 json5_generator.Maker(ComputedStyleBaseWriter).main() |
OLD | NEW |