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

Side by Side Diff: tools/dom/scripts/css_code_generator.py

Issue 455483002: Make camelcasing use a regular expression for CSS properties. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 4 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
OLDNEW
1 #!/usr/bin/python 1 #!/usr/bin/python
2 # 2 #
3 # Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 3 # Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
4 # for details. All rights reserved. Use of this source code is governed by a 4 # for details. All rights reserved. Use of this source code is governed by a
5 # BSD-style license that can be found in the LICENSE file. 5 # BSD-style license that can be found in the LICENSE file.
6 6
7 """Generates CSSStyleDeclaration template file from css property definitions 7 """Generates CSSStyleDeclaration template file from css property definitions
8 defined in WebKit.""" 8 defined in WebKit."""
9 9
10 import tempfile, os 10 import tempfile, os
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
119 void setProperty(String propertyName, String value, [String priority]) { 119 void setProperty(String propertyName, String value, [String priority]) {
120 if (_supportsProperty(_camelCase(propertyName))) { 120 if (_supportsProperty(_camelCase(propertyName))) {
121 return _setPropertyHelper(propertyName, value, priority); 121 return _setPropertyHelper(propertyName, value, priority);
122 } else { 122 } else {
123 return _setPropertyHelper(Device.cssPrefix + propertyName, value, 123 return _setPropertyHelper(Device.cssPrefix + propertyName, value,
124 priority); 124 priority);
125 } 125 }
126 } 126 }
127 127
128 String _camelCase(String hyphenated) { 128 String _camelCase(String hyphenated) {
129 bool firstWord = true; 129 // The "ms" prefix is always lowercased.
130 return hyphenated.splitMapJoin('-', onMatch : (_) => '', 130 return hyphenated.replaceFirst(new RegExp('^-ms-'), 'ms-').replaceAllMapped(
131 onNonMatch : (String word) { 131 new RegExp('-([a-z]+)', caseSensitive: false),
132 if (word.length > 0) { 132 (match) => match[0][1].toUpperCase() + match[0].substring(2));
133 if (firstWord) {
134 firstWord = false;
135 return word;
136 }
137 return word[0].toUpperCase() + word.substring(1);
138 }
139 return '';
140 });
141 } 133 }
142 134
143 $if DART2JS 135 $if DART2JS
144 void _setPropertyHelper(String propertyName, String value, [String priority]) { 136 void _setPropertyHelper(String propertyName, String value, [String priority]) {
145 // try/catch for IE9 which throws on unsupported values. 137 // try/catch for IE9 which throws on unsupported values.
146 try { 138 try {
147 if (value == null) value = ''; 139 if (value == null) value = '';
148 if (priority == null) { 140 if (priority == null) {
149 priority = ''; 141 priority = '';
150 } 142 }
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 class_lines.append(annotated[base_css_name]) 228 class_lines.append(annotated[base_css_name])
237 class_lines.append(""" 229 class_lines.append("""
238 void set %s(String value) { 230 void set %s(String value) {
239 setProperty('%s', value, ''); 231 setProperty('%s', value, '');
240 } 232 }
241 """ % (camel_case_name, css_name)) 233 """ % (camel_case_name, css_name))
242 234
243 class_file.write(''.join(class_lines)); 235 class_file.write(''.join(class_lines));
244 class_file.write('}\n') 236 class_file.write('}\n')
245 class_file.close() 237 class_file.close()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698