Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(44)

Side by Side Diff: third_party/WebKit/Source/build/scripts/make_computed_style_base.py

Issue 2785013002: Add utility for joining names in generated code. (Closed)
Patch Set: Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698