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 |
11 import make_style_builder | 11 import make_style_builder |
12 | 12 |
13 from name_utilities import ( | 13 from name_utilities import ( |
14 enum_for_css_keyword, enum_type_name, enum_value_name, class_member_name, me
thod_name | 14 enum_for_css_keyword, enum_type_name, enum_value_name, class_member_name, me
thod_name, |
| 15 join_name |
15 ) | 16 ) |
16 | 17 |
17 | 18 |
18 # Temporary hard-coded list of fields that are not CSS properties. | 19 # Temporary hard-coded list of fields that are not CSS properties. |
19 # TODO(shend): Put this into its own JSON5 file. | 20 # TODO(shend): Put this into its own JSON5 file. |
20 NONPROPERTIES = [ | 21 NONPROPERTIES = [ |
21 {'name': 'IsLink', 'field_template': 'monotonic_flag', | 22 {'name': 'IsLink', 'field_template': 'monotonic_flag', |
22 'inherited': False, 'independent': False}, | 23 'inherited': False, 'independent': False}, |
23 {'name': 'OriginalDisplay', 'field_template': 'keyword', 'initial_keyword':
'inline', | 24 {'name': 'OriginalDisplay', 'field_template': 'keyword', 'initial_keyword':
'inline', |
24 'type_name': 'EDisplay', 'inherited': False, 'independent': False, | 25 'type_name': 'EDisplay', 'inherited': False, 'independent': False, |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
106 self.is_inherited_flag = field_role == 'inherited_flag' | 107 self.is_inherited_flag = field_role == 'inherited_flag' |
107 self.is_nonproperty = field_role == 'nonproperty' | 108 self.is_nonproperty = field_role == 'nonproperty' |
108 assert (self.is_property, self.is_inherited_flag, self.is_nonproperty).c
ount(True) == 1, \ | 109 assert (self.is_property, self.is_inherited_flag, self.is_nonproperty).c
ount(True) == 1, \ |
109 'Field role has to be exactly one of: property, inherited_flag, nonp
roperty' | 110 'Field role has to be exactly one of: property, inherited_flag, nonp
roperty' |
110 | 111 |
111 if not self.is_inherited_flag: | 112 if not self.is_inherited_flag: |
112 self.is_inherited = kwargs.pop('inherited') | 113 self.is_inherited = kwargs.pop('inherited') |
113 self.is_independent = kwargs.pop('independent') | 114 self.is_independent = kwargs.pop('independent') |
114 assert self.is_inherited or not self.is_independent, 'Only inherited
fields can be independent' | 115 assert self.is_inherited or not self.is_independent, 'Only inherited
fields can be independent' |
115 | 116 |
116 self.is_inherited_method_name = method_name(name_for_methods + 'IsIn
herited') | 117 self.is_inherited_method_name = method_name(join_name(name_for_metho
ds, 'is inherited')) |
117 | 118 |
118 # Method names | 119 # Method names |
119 getter_prefix = 'Get' if name_for_methods == self.type_name else '' | 120 getter_prefix = 'Get' if name_for_methods == self.type_name else '' |
120 self.getter_method_name = method_name(getter_prefix + name_for_methods) | 121 self.getter_method_name = method_name(join_name(getter_prefix, name_for_
methods)) |
121 self.setter_method_name = method_name('Set' + name_for_methods) | 122 self.setter_method_name = method_name(join_name('set', name_for_methods)
) |
122 self.initial_method_name = method_name('Initial' + name_for_methods) | 123 self.initial_method_name = method_name(join_name('initial', name_for_met
hods)) |
123 self.resetter_method_name = method_name('Reset' + name_for_methods) | 124 self.resetter_method_name = method_name(join_name('reset', name_for_meth
ods)) |
124 | 125 |
125 assert len(kwargs) == 0, 'Unexpected arguments provided to Field: ' + st
r(kwargs) | 126 assert len(kwargs) == 0, 'Unexpected arguments provided to Field: ' + st
r(kwargs) |
126 | 127 |
127 | 128 |
128 def _get_include_paths(properties): | 129 def _get_include_paths(properties): |
129 """ | 130 """ |
130 Get a list of paths that need to be included for ComputedStyleBase. | 131 Get a list of paths that need to be included for ComputedStyleBase. |
131 """ | 132 """ |
132 include_paths = set() | 133 include_paths = set() |
133 for property_ in properties: | 134 for property_ in properties: |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
198 ) | 199 ) |
199 | 200 |
200 | 201 |
201 def _create_inherited_flag_field(property_): | 202 def _create_inherited_flag_field(property_): |
202 """ | 203 """ |
203 Create the field used for an inheritance fast path from an independent CSS p
roperty, | 204 Create the field used for an inheritance fast path from an independent CSS p
roperty, |
204 and return the Field object. | 205 and return the Field object. |
205 """ | 206 """ |
206 return Field( | 207 return Field( |
207 'inherited_flag', | 208 'inherited_flag', |
208 property_['name_for_methods'] + 'IsInherited', | 209 join_name(property_['name_for_methods'], 'is inherited'), |
209 property_name=property_['name'], | 210 property_name=property_['name'], |
210 type_name='bool', | 211 type_name='bool', |
211 field_template='flag', | 212 field_template='flag', |
212 size=1, | 213 size=1, |
213 default_value='true', | 214 default_value='true', |
214 ) | 215 ) |
215 | 216 |
216 | 217 |
217 def _create_fields(field_role, properties): | 218 def _create_fields(field_role, properties): |
218 """ | 219 """ |
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
367 'mapping': [(enum_value_name(k), enum_for_css_keyword(k)) fo
r k in property_['keywords']], | 368 'mapping': [(enum_value_name(k), enum_for_css_keyword(k)) fo
r k in property_['keywords']], |
368 } | 369 } |
369 | 370 |
370 return { | 371 return { |
371 'include_paths': self._include_paths, | 372 'include_paths': self._include_paths, |
372 'mappings': mappings, | 373 'mappings': mappings, |
373 } | 374 } |
374 | 375 |
375 if __name__ == '__main__': | 376 if __name__ == '__main__': |
376 json5_generator.Maker(ComputedStyleBaseWriter).main() | 377 json5_generator.Maker(ComputedStyleBaseWriter).main() |
OLD | NEW |