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

Unified Diff: mojo/public/tools/bindings/generators/mojom_js_generator.py

Issue 2855263002: Mojo bindings: support generating identifers using different style rules for different target langu…
Patch Set: . Created 3 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: mojo/public/tools/bindings/generators/mojom_js_generator.py
diff --git a/mojo/public/tools/bindings/generators/mojom_js_generator.py b/mojo/public/tools/bindings/generators/mojom_js_generator.py
index 28b709aae245811a7a5e23b972884b0698bd0d6f..63fbfba3d55fb87b23e08fd60fce606fc9aef228 100644
--- a/mojo/public/tools/bindings/generators/mojom_js_generator.py
+++ b/mojo/public/tools/bindings/generators/mojom_js_generator.py
@@ -42,8 +42,10 @@ def JavaScriptType(kind):
if kind.imported_from:
name.append(kind.imported_from["unique_name"])
if kind.parent_kind:
- name.append(kind.parent_kind.name)
- name.append(kind.name)
+ name.append(kind.parent_kind.stylized_name)
+ if not hasattr(kind, 'stylized_name'):
+ print kind
+ name.append(kind.stylized_name)
return ".".join(name)
@@ -271,9 +273,9 @@ def TranslateConstants(token):
if token.imported_from:
name.append(token.imported_from["unique_name"])
if token.parent_kind:
- name.append(token.parent_kind.name)
+ name.append(token.parent_kind.stylized_name)
if isinstance(token, mojom.EnumValue):
- name.append(token.enum.name)
+ name.append(token.enum.stylized_name)
name.append(token.name)
return ".".join(name)
@@ -341,6 +343,30 @@ def GetRelativePath(module, base_module):
return os.path.relpath(module.path, os.path.dirname(base_module.path))
+class JsStylizer(generator.Stylizer):
+ def __init__(self, use_new_js_bindings):
+ self.use_new_js_bindings = use_new_js_bindings
+
+ def StylizeField(self, name):
+ if not self.use_new_js_bindings:
+ return name
+ return generator.ToCamel(name, lower_initial=True)
+
+ def StylizeParameter(self, name):
+ if not self.use_new_js_bindings:
+ return name
+ return generator.ToCamel(name, lower_initial=True)
+
+ def StylizeMethod(self, name):
+ return generator.ToCamel(name, lower_initial=True)
+
+ def StylizeModule(self, name):
+ if not self.use_new_js_bindings:
+ return name
+ return '.'.join(
+ generator.ToCamel(word, lower_initial=True) for word in name.split('.'))
+
+
class Generator(generator.Generator):
js_filters = {
@@ -349,6 +375,7 @@ class Generator(generator.Generator):
"encode_snippet": JavaScriptEncodeSnippet,
"expression_to_text": ExpressionToText,
"field_offset": JavaScriptFieldOffset,
+ "get_relative_path": GetRelativePath,
"has_callbacks": mojom.HasCallbacks,
"is_any_handle_or_interface_field": IsAnyHandleOrInterfaceField,
"is_array_pointer_field": IsArrayPointerField,
@@ -367,8 +394,7 @@ class Generator(generator.Generator):
"js_type": JavaScriptType,
"method_passes_associated_kinds": mojom.MethodPassesAssociatedKinds,
"payload_size": JavaScriptPayloadSize,
- "get_relative_path": GetRelativePath,
- "stylize_method": generator.StudlyCapsToCamel,
+ "to_camel": generator.ToCamel,
"union_decode_snippet": JavaScriptUnionDecodeSnippet,
"union_encode_snippet": JavaScriptUnionEncodeSnippet,
"validate_array_params": JavaScriptValidateArrayParams,
@@ -381,16 +407,14 @@ class Generator(generator.Generator):
def GetParameters(self):
return {
- "namespace": self.module.namespace,
- "imports": self.GetImports(),
- "kinds": self.module.kinds,
"enums": self.module.enums,
+ "imports": self.module.imports,
+ "interfaces": self.module.interfaces,
+ "kinds": self.module.kinds,
"module": self.module,
- "structs": self.GetStructs() + self.GetStructsFromMethods(),
- "unions": self.GetUnions(),
+ "structs": self.module.structs + self.GetStructsFromMethods(),
+ "unions": self.module.unions,
"use_new_js_bindings": self.use_new_js_bindings,
- "interfaces": self.GetInterfaces(),
- "imported_interfaces": self.GetImportedInterfaces(),
}
@staticmethod
@@ -409,10 +433,14 @@ class Generator(generator.Generator):
if self.variant:
raise Exception("Variants not supported in JavaScript bindings.")
+ self.FinalizeModule(JsStylizer(self.use_new_js_bindings))
+
self.Write(self.GenerateAMDModule(),
self.MatchMojomFilePath("%s.js" % self.module.name))
- def GetImports(self):
+ def FinalizeModule(self, stylizer=None):
+ super(Generator, self).FinalizeModule(stylizer)
+
used_names = set()
for each_import in self.module.imports:
simple_name = each_import["module_name"].split(".")[0]
@@ -428,13 +456,3 @@ class Generator(generator.Generator):
used_names.add(unique_name)
each_import["unique_name"] = unique_name + "$"
counter += 1
- return self.module.imports
-
- def GetImportedInterfaces(self):
- interface_to_import = {};
- for each_import in self.module.imports:
- for each_interface in each_import["module"].interfaces:
- name = each_interface.name
- interface_to_import[name] = each_import["unique_name"] + "." + name
- return interface_to_import;
-

Powered by Google App Engine
This is Rietveld 408576698