Index: client/html/scripts/css_code_generator.py |
=================================================================== |
--- client/html/scripts/css_code_generator.py (revision 5796) |
+++ client/html/scripts/css_code_generator.py (working copy) |
@@ -1,219 +0,0 @@ |
-#!/usr/bin/python2.6 |
-# |
-# Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
-# for details. All rights reserved. Use of this source code is governed by a |
-# BSD-style license that can be found in the LICENSE file. |
- |
-"""Generates CSSStyleDeclaration from css property definitions defined in WebKit.""" |
- |
-import tempfile, os |
- |
-COMMENT_LINE_PREFIX = ' * ' |
-SOURCE_PATH = 'Source/WebCore/css/CSSPropertyNames.in' |
-INPUT_URL = 'http://trac.webkit.org/export/latest/trunk/%s' % SOURCE_PATH |
-INTERFACE_FILE = '../../html/src/CSSStyleDeclaration.dart' |
-CLASS_FILE = '../../html/src/CSSStyleDeclarationWrappingImplementation.dart' |
- |
-def main(): |
- _, css_names_file = tempfile.mkstemp('.CSSPropertyNames.in') |
- try: |
- if os.system('wget %s -O %s' % (INPUT_URL, css_names_file)): |
- return 1 |
- generate_code(css_names_file) |
- print 'Successfully generated %s and %s' % (INTERFACE_FILE, CLASS_FILE) |
- finally: |
- os.remove(css_names_file) |
- |
-def camelCaseName(name): |
- """Convert a CSS property name to a lowerCamelCase name.""" |
- name = name.replace('-webkit-', '') |
- words = [] |
- for word in name.split('-'): |
- if words: |
- words.append(word.title()) |
- else: |
- words.append(word) |
- return ''.join(words) |
- |
-def generate_code(input_path): |
- data = open(input_path).readlines() |
- |
- # filter CSSPropertyNames.in to only the properties |
- data = [d[:-1] for d in data |
- if len(d) > 1 |
- and not d.startswith('#') |
- and not d.startswith('//') |
- and not '=' in d] |
- |
- interface_file = open(INTERFACE_FILE, 'w') |
- class_file = open(CLASS_FILE, 'w') |
- |
- interface_file.write(""" |
-// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
-// for details. All rights reserved. Use of this source code is governed by a |
-// BSD-style license that can be found in the LICENSE file. |
- |
-// WARNING: Do not edit. |
-// This file was generated by html/scripts/css_code_generator.py |
- |
-// Source of CSS properties: |
-// %s |
- |
-// TODO(jacobr): add versions that take numeric values in px, miliseconds, etc. |
- |
-interface CSSStyleDeclaration { |
- |
- String get cssText(); |
- |
- void set cssText(String value); |
- |
- int get length(); |
- |
- CSSRule get parentRule(); |
- |
- CSSValue getPropertyCSSValue(String propertyName); |
- |
- String getPropertyPriority(String propertyName); |
- |
- String getPropertyShorthand(String propertyName); |
- |
- String getPropertyValue(String propertyName); |
- |
- bool isPropertyImplicit(String propertyName); |
- |
- String item(int index); |
- |
- String removeProperty(String propertyName); |
- |
- void setProperty(String propertyName, String value, [String priority]); |
- |
-""".lstrip() % SOURCE_PATH) |
- |
- |
- class_file.write(""" |
-// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
-// for details. All rights reserved. Use of this source code is governed by a |
-// BSD-style license that can be found in the LICENSE file. |
- |
-// WARNING: Do not edit. |
-// This file was generated by html/scripts/css_code_generator.py |
- |
-// Source of CSS properties: |
-// %s |
- |
-// TODO(jacobr): add versions that take numeric values in px, miliseconds, etc. |
- |
-class CSSStyleDeclarationWrappingImplementation extends DOMWrapperBase implements CSSStyleDeclaration { |
- static String _cachedBrowserPrefix; |
- |
- CSSStyleDeclarationWrappingImplementation._wrap(ptr) : super._wrap(ptr) {} |
- |
- static String get _browserPrefix() { |
- if (_cachedBrowserPrefix === null) { |
- if (_Device.isFirefox) { |
- _cachedBrowserPrefix = '-moz-'; |
- } else { |
- _cachedBrowserPrefix = '-webkit-'; |
- } |
- // TODO(jacobr): support IE 9.0 and Opera as well. |
- } |
- return _cachedBrowserPrefix; |
- } |
- |
- String get cssText() { return _ptr.cssText; } |
- |
- void set cssText(String value) { _ptr.cssText = value; } |
- |
- int get length() { return _ptr.length; } |
- |
- CSSRule get parentRule() { return LevelDom.wrapCSSRule(_ptr.parentRule); } |
- |
- CSSValue getPropertyCSSValue(String propertyName) { |
- return LevelDom.wrapCSSValue(_ptr.getPropertyCSSValue(propertyName)); |
- } |
- |
- String getPropertyPriority(String propertyName) { |
- return _ptr.getPropertyPriority(propertyName); |
- } |
- |
- String getPropertyShorthand(String propertyName) { |
- return _ptr.getPropertyShorthand(propertyName); |
- } |
- |
- String getPropertyValue(String propertyName) { |
- return _ptr.getPropertyValue(propertyName); |
- } |
- |
- bool isPropertyImplicit(String propertyName) { |
- return _ptr.isPropertyImplicit(propertyName); |
- } |
- |
- String item(int index) { |
- return _ptr.item(index); |
- } |
- |
- String removeProperty(String propertyName) { |
- return _ptr.removeProperty(propertyName); |
- } |
- |
- void setProperty(String propertyName, String value, [String priority = '']) { |
- _ptr.setProperty(propertyName, value, priority); |
- } |
- |
- String get typeName() { return "CSSStyleDeclaration"; } |
- |
-""".lstrip() % SOURCE_PATH) |
- |
- interface_lines = []; |
- class_lines = []; |
- |
- seen = set() |
- for prop in sorted(data, key=lambda p: camelCaseName(p)): |
- camel_case_name = camelCaseName(prop) |
- upper_camel_case_name = camel_case_name[0].upper() + camel_case_name[1:]; |
- css_name = prop.replace('-webkit-', '${_browserPrefix}') |
- base_css_name = prop.replace('-webkit-', '') |
- |
- if base_css_name in seen: |
- continue |
- seen.add(base_css_name) |
- |
- comment = ' /** %s the value of "' + base_css_name + '" */' |
- |
- interface_lines.append(comment % 'Gets') |
- interface_lines.append(""" |
- String get %s(); |
- |
-""" % camel_case_name) |
- |
- interface_lines.append(comment % 'Sets') |
- interface_lines.append(""" |
- void set %s(String value); |
- |
-""" % camel_case_name) |
- |
- class_lines.append('\n'); |
- class_lines.append(comment % 'Gets') |
- class_lines.append(""" |
- String get %s() => |
- getPropertyValue('%s'); |
- |
-""" % (camel_case_name, css_name)) |
- |
- class_lines.append(comment % 'Sets') |
- class_lines.append(""" |
- void set %s(String value) { |
- setProperty('%s', value, ''); |
- } |
-""" % (camel_case_name, css_name)) |
- |
- interface_file.write(''.join(interface_lines)); |
- interface_file.write('}\n') |
- interface_file.close() |
- |
- class_file.write(''.join(class_lines)); |
- class_file.write('}\n') |
- class_file.close() |
- |
-if __name__ == '__main__': |
- main() |