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

Side by Side Diff: core/scripts/make_style_builder.py

Issue 15643014: Blink IDL roll. (Closed) Base URL: http://dart.googlecode.com/svn/third_party/WebCore/
Patch Set: Created 7 years, 6 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 | Annotate | Revision Log
« no previous file with comments | « core/scripts/make_runtime_features.py ('k') | core/scripts/name_macros.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright (C) 2013 Google Inc. All rights reserved. 2 # Copyright (C) 2013 Google Inc. All rights reserved.
3 # 3 #
4 # Redistribution and use in source and binary forms, with or without 4 # Redistribution and use in source and binary forms, with or without
5 # modification, are permitted provided that the following conditions are 5 # modification, are permitted provided that the following conditions are
6 # met: 6 # met:
7 # 7 #
8 # * Redistributions of source code must retain the above copyright 8 # * Redistributions of source code must retain the above copyright
9 # notice, this list of conditions and the following disclaimer. 9 # notice, this list of conditions and the following disclaimer.
10 # * Redistributions in binary form must reproduce the above 10 # * Redistributions in binary form must reproduce the above
(...skipping 13 matching lines...) Expand all
24 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 24 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 29
30 import re 30 import re
31 import sys 31 import sys
32 32
33 import in_generator 33 import in_generator
34 import template_expander
34 35
35 36
36 class StyleBuilderWriter(in_generator.Writer): 37 class StyleBuilderWriter(in_generator.Writer):
37 class_name = 'StyleBuilder' 38 class_name = 'StyleBuilder'
38 39
39 valid_values = { 40 valid_values = {
40 'apply_type': ['default', 'length'], 41 'apply_type': ['default', 'length'],
41 'use_none': [True, False], 42 'use_none': [True, False],
42 'use_intrinsic': [True, False], 43 'use_intrinsic': [True, False],
43 'use_auto': [True, False], 44 'use_auto': [True, False],
45 'custom_all': [True, False],
46 'custom_initial': [True, False],
47 'custom_inherit': [True, False],
48 'custom_value': [True, False],
44 } 49 }
45 defaults = { 50 defaults = {
46 'condition': None, 51 'condition': None,
47 'apply_type': 'default', 52 'apply_type': 'default',
48 'name_for_methods': None, 53 'name_for_methods': None,
49 # These depend on property name by default 54 # These depend on property name by default
50 'type_name': None, 55 'type_name': None,
51 'getter': None, 56 'getter': None,
52 'setter': None, 57 'setter': None,
53 'initial': None, 58 'initial': None,
54 # For the length apply type 59 # Setting these stops default handlers being generated
60 # Setting custom_all is the same as setting the other three
61 'custom_all': False,
62 'custom_initial': False,
63 'custom_inherit': False,
64 'custom_value': False,
65 # For the length apply type. Will get moved out to StyleBuilderFunctions.cpp.tmp l
55 'use_none': False, 66 'use_none': False,
56 'use_intrinsic': False, 67 'use_intrinsic': False,
57 'use_auto': False, 68 'use_auto': False,
58 } 69 }
59 70
60 def __init__(self, in_files, enabled_conditions): 71 def __init__(self, in_files, enabled_conditions):
61 super(StyleBuilderWriter, self).__init__(in_files, enabled_conditions) 72 super(StyleBuilderWriter, self).__init__(in_files, enabled_conditions)
73 self._outputs = {("StyleBuilderFunctions.h"): self.generate_style_builde r_functions_h,
74 ("StyleBuilderFunctions.cpp"): self.generate_style_buil der_functions_cpp,
75 ("StyleBuilder.cpp"): self.generate_style_builder,
76 }
77
62 self._properties = self.in_file.name_dictionaries 78 self._properties = self.in_file.name_dictionaries
63 79
64 def set_if_none(property, key, value): 80 def set_if_none(property, key, value):
65 if property[key] is None: 81 if property[key] is None:
66 property[key] = value 82 property[key] = value
67 83
68 for property in self._properties: 84 for property in self._properties:
69 cc = self._camelcase_property_name(property["name"]) 85 cc = self._camelcase_property_name(property["name"])
70 property["property_id"] = "CSSProperty" + cc 86 property["property_id"] = "CSSProperty" + cc
71 cc = property["name_for_methods"] or cc.replace("Webkit", "") 87 cc = property["name_for_methods"] or cc.replace("Webkit", "")
72 set_if_none(property, "type_name", "E" + cc) 88 set_if_none(property, "type_name", "E" + cc)
73 set_if_none(property, "getter", self._lower_first(cc)) 89 set_if_none(property, "getter", self._lower_first(cc))
74 set_if_none(property, "setter", "set" + cc) 90 set_if_none(property, "setter", "set" + cc)
75 set_if_none(property, "initial", "initial" + cc) 91 set_if_none(property, "initial", "initial" + cc)
92 if property["custom_all"]:
93 property["custom_initial"] = True
94 property["custom_inherit"] = True
95 property["custom_value"] = True
96
97 self._properties = dict((property["property_id"], property) for property in self._properties)
76 98
77 # FIXME: some of these might be better in a utils file 99 # FIXME: some of these might be better in a utils file
78 @staticmethod 100 @staticmethod
79 def _camelcase_property_name(property_name): 101 def _camelcase_property_name(property_name):
80 return re.sub(r'(^[^-])|-(.)', lambda match: (match.group(1) or match.gr oup(2)).upper(), property_name) 102 return re.sub(r'(^[^-])|-(.)', lambda match: (match.group(1) or match.gr oup(2)).upper(), property_name)
81 103
82 @staticmethod 104 @staticmethod
83 def _lower_first(s): 105 def _lower_first(s):
84 return s[0].lower() + s[1:] 106 return s[0].lower() + s[1:]
85 107
86 @staticmethod 108 @staticmethod
87 def _upper_first(s): 109 def _upper_first(s):
88 return s[0].upper() + s[1:] 110 return s[0].upper() + s[1:]
89 111
90 def generate_implementation(self): 112 @template_expander.use_jinja("StyleBuilderFunctions.h.tmpl")
113 def generate_style_builder_functions_h(self):
114 return {
115 "properties": self._properties,
116 }
117
118 @template_expander.use_jinja("StyleBuilderFunctions.cpp.tmpl")
119 def generate_style_builder_functions_cpp(self):
120 return {
121 "properties": self._properties,
122 }
123
124 @template_expander.use_jinja("StyleBuilder.cpp.tmpl")
125 def generate_style_builder(self):
91 return { 126 return {
92 "properties": self._properties, 127 "properties": self._properties,
93 } 128 }
94 129
95 130
96 if __name__ == "__main__": 131 if __name__ == "__main__":
97 in_generator.Maker(StyleBuilderWriter).main(sys.argv) 132 in_generator.Maker(StyleBuilderWriter).main(sys.argv)
OLDNEW
« no previous file with comments | « core/scripts/make_runtime_features.py ('k') | core/scripts/name_macros.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698