| 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..d59c14063a8e80dc87b9bc9a17d3f8b587b81676
|
| --- /dev/null
|
| +++ b/Source/build/scripts/css_properties.py
|
| @@ -0,0 +1,76 @@
|
| +#!/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': '',
|
| + 'font': False,
|
| + '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 = {
|
| + 'font': (True, False),
|
| + 'svg': (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']}
|
| + properties = [property for property in properties if not property['alias_for']]
|
| +
|
| + 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'] = css_name_to_enum(property['name'])
|
| + property['upper_camel_name'] = 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}
|
| +
|
| +
|
| +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('-'))
|
| +
|
| +
|
| +def css_name_to_enum(css_name):
|
| + return 'CSSProperty' + camelcase_css_name(css_name)
|
|
|