Index: third_party/WebKit/Source/build/scripts/name_utilities.py |
diff --git a/third_party/WebKit/Source/build/scripts/name_utilities.py b/third_party/WebKit/Source/build/scripts/name_utilities.py |
index c5fdcaac722a1d39ccd16bebda72ad845442deeb..ca3fa3aac820ae7fcef379af04a6c0a29e4d0b64 100644 |
--- a/third_party/WebKit/Source/build/scripts/name_utilities.py |
+++ b/third_party/WebKit/Source/build/scripts/name_utilities.py |
@@ -69,6 +69,13 @@ def upper_first(name): |
return upper_first_letter(name) |
+def lower_first_letter(name): |
+ """Return name with first letter lowercased.""" |
+ if not name: |
+ return '' |
+ return name[0].lower() + name[1:] |
+ |
+ |
def upper_first_letter(name): |
"""Return name with first letter uppercased.""" |
if not name: |
@@ -76,14 +83,6 @@ def upper_first_letter(name): |
return name[0].upper() + name[1:] |
-def camel_case(css_name): |
- """Convert hyphen-separated-name to UpperCamelCase. |
- |
- E.g., '-foo-bar' becomes 'FooBar'. |
- """ |
- return ''.join(upper_first_letter(word) for word in css_name.split('-')) |
- |
- |
def to_macro_style(name): |
s1 = re.sub('(.)([A-Z][a-z]+)', r'\1_\2', name) |
return re.sub('([a-z0-9])([A-Z])', r'\1_\2', s1).upper() |
@@ -108,12 +107,49 @@ def cpp_name(entry): |
def enum_for_css_keyword(keyword): |
- return 'CSSValue' + ''.join(camel_case(keyword)) |
+ return 'CSSValue' + upper_camel_case(keyword) |
def enum_for_css_property(property_name): |
- return 'CSSProperty' + ''.join(camel_case(property_name)) |
+ return 'CSSProperty' + upper_camel_case(property_name) |
def enum_for_css_property_alias(property_name): |
- return 'CSSPropertyAlias' + camel_case(property_name) |
+ return 'CSSPropertyAlias' + upper_camel_case(property_name) |
+ |
+# TODO(shend): Merge these with the above methods. |
+# and update all the generators to use these ones. |
+# TODO(shend): Switch external callers of these methods to use the high level |
+# API below instead. |
+ |
+ |
+def split_name(name): |
+ """Splits a name in some format to a list of words""" |
+ return re.findall(r'(?:[A-Z][a-z]*)|[a-z]+|(?:\d+[a-z]*)', upper_first_letter(name)) |
+ |
+ |
+def upper_camel_case(name): |
+ return ''.join(upper_first_letter(word) for word in split_name(name)) |
+ |
+ |
+def lower_camel_case(name): |
+ return lower_first_letter(upper_camel_case(name)) |
+ |
+# Use these high level naming functions which describe the semantics of the name, |
+# rather than a particular style. |
+ |
+ |
+def enum_type_name(name): |
+ return upper_camel_case(name) |
+ |
+ |
+def enum_value_name(name): |
+ return 'k' + upper_camel_case(name) |
+ |
+ |
+def class_member_name(name): |
+ return 'm_' + lower_camel_case(name) |
+ |
+ |
+def method_name(name): |
+ return lower_camel_case(name) |