Chromium Code Reviews| Index: Source/build/scripts/css_properties.py |
| diff --git a/Source/build/scripts/css_properties.py b/Source/build/scripts/css_properties.py |
| new file mode 100755 |
| index 0000000000000000000000000000000000000000..c3f33966474ed5b7c56e8e6e3464846b96f7b320 |
| --- /dev/null |
| +++ b/Source/build/scripts/css_properties.py |
| @@ -0,0 +1,77 @@ |
| +#!/usr/bin/env python |
| +# Copyright 2014 The Chromium Authors. All rights reserved. |
| +# Use of this source code is governed by a BSD-style license that can be |
| +# found in the LICENSE file. |
| + |
| +import in_generator |
| +from name_utilities import lower_first |
| + |
| + |
| +class CSSProperties(in_generator.Writer): |
| + defaults = { |
| + 'alias_for': None, |
| + 'longhands': '', |
| + 'runtime_enabled_shorthand': None, |
| + 'font': False, |
|
Nils Barth (inactive)
2014/07/07 16:43:27
alpha?
|
| + 'svg': False, |
| + 'name_for_methods': None, |
| + 'getter': None, |
| + 'setter': None, |
| + 'initial': None, |
| + 'type_name': None, |
| + 'sb_converter': None, |
| + 'sb_custom_all': False, |
| + 'sb_custom_initial': False, |
| + 'sb_custom_inherit': False, |
| + 'sb_custom_value': False, |
| + 'sb_skip': False, |
| + 'sb_unreachable': False, |
| + } |
| + |
| + valid_values = { |
| + 'svg': [True, False], |
|
Nils Barth (inactive)
2014/07/07 16:43:27
list -> tuple?
|
| + 'font': [True, False], |
| + 'sb_custom_all': [True, False], |
| + 'sb_custom_initial': [True, False], |
| + 'sb_custom_inherit': [True, False], |
| + 'sb_custom_value': [True, False], |
| + 'sb_skip': [True, False], |
| + 'sb_unreachable': [True, False], |
| + } |
| + |
| + def __init__(self, file_paths): |
| + in_generator.Writer.__init__(self, file_paths) |
| + |
| + properties = self.in_file.name_dictionaries |
| + |
| + self._aliases = {property['name']: property['alias_for'] for property in properties if property['alias_for']} |
|
Nils Barth (inactive)
2014/07/07 16:43:27
line break?
This needs to be dict((property['name
|
| + properties = [property for property in properties if not property['alias_for']] |
|
Nils Barth (inactive)
2014/07/07 16:43:27
line break?
|
| + |
| + assert len(properties) <= 1024, "There are more than 1024 CSS Properties, you need to update CSSProperty.h/StylePropertyMetadata m_propertyID accordingly." |
| + # We currently assign 0 to CSSPropertyInvalid |
| + self._first_enum_value = 1 |
| + for offset, property in enumerate(properties): |
| + property['property_id'] = self._css_name_to_enum(property['name']) |
|
Nils Barth (inactive)
2014/07/07 16:43:27
Would this list be clearer alphabetically?
(other
|
| + property['upper_camel_name'] = self._camelcase_css_name(property['name']) |
| + property['lower_camel_name'] = lower_first(property['upper_camel_name']) |
| + property['enum_value'] = self._first_enum_value + offset |
| + property['is_internal'] = property['name'].startswith('-internal-') |
| + if property['sb_custom_all']: |
| + property['sb_custom_initial'] = True |
| + property['sb_custom_inherit'] = True |
| + property['sb_custom_value'] = True |
| + |
| + self._properties_list = properties |
| + self._properties = {property['property_id']: property for property in properties} |
| + |
| + @staticmethod |
|
Nils Barth (inactive)
2014/07/07 16:43:27
Any reason to use static methods instead of just f
|
| + def _camelcase_css_name(css_name): |
| + """Convert hyphen-separated-name to UpperCamelCase. |
| + |
| + E.g., '-foo-bar' becomes 'FooBar'. |
| + """ |
| + return ''.join(word.capitalize() for word in css_name.split('-')) |
| + |
| + @staticmethod |
| + def _css_name_to_enum(css_name): |
| + return "CSSProperty" + CSSProperties._camelcase_css_name(css_name) |
|
Nils Barth (inactive)
2014/07/07 16:43:27
Single quotes.
|