Index: Source/core/scripts/make_style_builder.py |
diff --git a/Source/core/scripts/make_internal_runtime_flags.py b/Source/core/scripts/make_style_builder.py |
old mode 100755 |
new mode 100644 |
similarity index 50% |
copy from Source/core/scripts/make_internal_runtime_flags.py |
copy to Source/core/scripts/make_style_builder.py |
index dc333235ff3fcbe1567e2fbb2a1bc08961476568..d6b4cc31a3702c595f3cedf8ce2a93acbb67aa71 |
--- a/Source/core/scripts/make_internal_runtime_flags.py |
+++ b/Source/core/scripts/make_style_builder.py |
@@ -27,32 +27,64 @@ |
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
-import os.path |
+import re |
import sys |
import in_generator |
-import make_runtime_features |
-# We want exactly the same parsing as RuntimeFeatureWriter |
-# but generate different files. |
-class InternalRuntimeFlagsWriter(make_runtime_features.RuntimeFeatureWriter): |
- class_name = "InternalRuntimeFlags" |
+class StyleBuilderWriter(in_generator.Writer): |
+ class_name = 'StyleBuilder' |
- def generate_idl(self): |
- return { |
- 'features': self._features, |
- } |
+ valid_values = { |
+ 'applytype': ['default'], |
+ } |
+ defaults = { |
+ 'condition': None, |
+ 'applytype': 'default', |
+ 'nameformethods': None, |
+# depends on property name by default |
+ 'typename': None, |
+ 'getter': None, |
+ 'setter': None, |
+ 'initial': None, |
+ } |
- def generate_header(self): |
- return { |
- 'features': self._features, |
- 'feature_sets': self._feature_sets(), |
- } |
+ def __init__(self, in_file_path): |
+ super(StyleBuilderWriter, self).__init__(in_file_path) |
+ self._properties = self.in_file.name_dictionaries |
+ |
+ def set_if_none(property, key, value): |
+ if property[key] is None: |
+ property[key] = value |
+ |
+ for property in self._properties: |
+ cc = self._camelcase_property_name(property["name"]) |
+ property["propertyid"] = "CSSProperty" + cc |
+ cc = property["nameformethods"] or cc.replace("Webkit", "") |
+ set_if_none(property, "typename", "E" + cc) |
+ set_if_none(property, "getter", self._lower_first(cc)) |
+ set_if_none(property, "setter", "set" + cc) |
+ set_if_none(property, "initial", "initial" + cc) |
+ |
+# FIXME: some of these might be better in a utils file |
+ @staticmethod |
+ def _camelcase_property_name(property_name): |
+ return re.sub(r'(^[^-])|-(.)', lambda match: (match.group(1) or match.group(2)).upper(), property_name) |
+ |
+ @staticmethod |
+ def _lower_first(s): |
+ return s[0].lower() + s[1:] |
+ |
+ @staticmethod |
+ def _upper_first(s): |
+ return s[0].upper() + s[1:] |
def generate_implementation(self): |
- return None |
+ return { |
+ "properties": self._properties, |
+ } |
if __name__ == "__main__": |
- in_generator.Maker(InternalRuntimeFlagsWriter).main(sys.argv) |
+ in_generator.Maker(StyleBuilderWriter).main(sys.argv) |