| OLD | NEW |
| 1 # Copyright 2013 The Chromium Authors. All rights reserved. | 1 # Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 """Code shared by the various language-specific code generators.""" | 5 """Code shared by the various language-specific code generators.""" |
| 6 | 6 |
| 7 from functools import partial | 7 from functools import partial |
| 8 import os.path | 8 import os.path |
| 9 import re | 9 import re |
| 10 | 10 |
| (...skipping 14 matching lines...) Expand all Loading... |
| 25 if |lower_initial| is set to True), and joins the words. Please note that for | 25 if |lower_initial| is set to True), and joins the words. Please note that for |
| 26 each word, all the characters except the first one are untouched. | 26 each word, all the characters except the first one are untouched. |
| 27 """ | 27 """ |
| 28 result = ''.join( | 28 result = ''.join( |
| 29 word[0].upper() + word[1:] for word in identifier.split(dilimiter)) | 29 word[0].upper() + word[1:] for word in identifier.split(dilimiter)) |
| 30 if lower_initial: | 30 if lower_initial: |
| 31 result = result[0].lower() + result[1:] | 31 result = result[0].lower() + result[1:] |
| 32 return result | 32 return result |
| 33 | 33 |
| 34 | 34 |
| 35 class Stylizer(object): |
| 36 """Stylizers specify naming rules to map mojom names to names in generated |
| 37 code. For example, if you would like method_name in mojom to be mapped to |
| 38 MethodName in the generated code, you need to define a subclass of Stylizer |
| 39 and override StylizeMethod to do the conversion.""" |
| 40 |
| 41 def StylizeConstant(self, mojom_name): |
| 42 return mojom_name |
| 43 |
| 44 def StylizeField(self, mojom_name): |
| 45 return mojom_name |
| 46 |
| 47 def StylizeStruct(self, mojom_name): |
| 48 return mojom_name |
| 49 |
| 50 def StylizeUnion(self, mojom_name): |
| 51 return mojom_name |
| 52 |
| 53 def StylizeParameter(self, mojom_name): |
| 54 return mojom_name |
| 55 |
| 56 def StylizeMethod(self, mojom_name): |
| 57 return mojom_name |
| 58 |
| 59 def StylizeInterface(self, mojom_name): |
| 60 return mojom_name |
| 61 |
| 62 def StylizeEnumField(self, mojom_name): |
| 63 return mojom_name |
| 64 |
| 65 def StylizeEnum(self, mojom_name): |
| 66 return mojom_name |
| 67 |
| 68 def StylizeModule(self, mojom_namespace): |
| 69 return mojom_namespace |
| 70 |
| 71 |
| 35 def WriteFile(contents, full_path): | 72 def WriteFile(contents, full_path): |
| 36 # Make sure the containing directory exists. | 73 # Make sure the containing directory exists. |
| 37 full_dir = os.path.dirname(full_path) | 74 full_dir = os.path.dirname(full_path) |
| 38 fileutil.EnsureDirectoryExists(full_dir) | 75 fileutil.EnsureDirectoryExists(full_dir) |
| 39 | 76 |
| 40 # Dump the data to disk. | 77 # Dump the data to disk. |
| 41 with open(full_path, "w+") as f: | 78 with open(full_path, "w+") as f: |
| 42 f.write(contents) | 79 f.write(contents) |
| 43 | 80 |
| 44 | 81 |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 78 if method.response_parameters is not None: | 115 if method.response_parameters is not None: |
| 79 method.response_param_struct = _GetResponseStructFromMethod(method) | 116 method.response_param_struct = _GetResponseStructFromMethod(method) |
| 80 interface.version = max( | 117 interface.version = max( |
| 81 interface.version, | 118 interface.version, |
| 82 method.response_param_struct.versions[-1].version) | 119 method.response_param_struct.versions[-1].version) |
| 83 else: | 120 else: |
| 84 method.response_param_struct = None | 121 method.response_param_struct = None |
| 85 | 122 |
| 86 def _GetStructFromMethod(method): | 123 def _GetStructFromMethod(method): |
| 87 """Converts a method's parameters into the fields of a struct.""" | 124 """Converts a method's parameters into the fields of a struct.""" |
| 88 params_class = "%s_%s_Params" % (method.interface.name, method.name) | 125 params_class = "%s_%s_Params" % (method.interface.mojom_name, |
| 126 method.mojom_name) |
| 89 struct = mojom.Struct(params_class, module=method.interface.module) | 127 struct = mojom.Struct(params_class, module=method.interface.module) |
| 90 for param in method.parameters: | 128 for param in method.parameters: |
| 91 struct.AddField(param.name, param.kind, param.ordinal, | 129 struct.AddField(param.mojom_name, param.kind, param.ordinal, |
| 92 attributes=param.attributes) | 130 attributes=param.attributes) |
| 93 _AddStructComputedData(False, struct) | 131 _AddStructComputedData(False, struct) |
| 94 return struct | 132 return struct |
| 95 | 133 |
| 96 def _GetResponseStructFromMethod(method): | 134 def _GetResponseStructFromMethod(method): |
| 97 """Converts a method's response_parameters into the fields of a struct.""" | 135 """Converts a method's response_parameters into the fields of a struct.""" |
| 98 params_class = "%s_%s_ResponseParams" % (method.interface.name, method.name) | 136 params_class = "%s_%s_ResponseParams" % (method.interface.mojom_name, |
| 137 method.mojom_name) |
| 99 struct = mojom.Struct(params_class, module=method.interface.module) | 138 struct = mojom.Struct(params_class, module=method.interface.module) |
| 100 for param in method.response_parameters: | 139 for param in method.response_parameters: |
| 101 struct.AddField(param.name, param.kind, param.ordinal, | 140 struct.AddField(param.mojom_name, param.kind, param.ordinal, |
| 102 attributes=param.attributes) | 141 attributes=param.attributes) |
| 103 _AddStructComputedData(False, struct) | 142 _AddStructComputedData(False, struct) |
| 104 return struct | 143 return struct |
| 105 | 144 |
| 106 for struct in module.structs: | 145 for struct in module.structs: |
| 107 _AddStructComputedData(True, struct) | 146 _AddStructComputedData(True, struct) |
| 108 for union in module.unions: | 147 for union in module.unions: |
| 109 _AddUnionComputedData(union) | 148 _AddUnionComputedData(union) |
| 110 for interface in module.interfaces: | 149 for interface in module.interfaces: |
| 111 _AddInterfaceComputedData(interface) | 150 _AddInterfaceComputedData(interface) |
| (...skipping 11 matching lines...) Expand all Loading... |
| 123 self.typemap = typemap or {} | 162 self.typemap = typemap or {} |
| 124 self.variant = variant | 163 self.variant = variant |
| 125 self.bytecode_path = bytecode_path | 164 self.bytecode_path = bytecode_path |
| 126 self.for_blink = for_blink | 165 self.for_blink = for_blink |
| 127 self.use_once_callback = use_once_callback | 166 self.use_once_callback = use_once_callback |
| 128 self.use_new_js_bindings = use_new_js_bindings | 167 self.use_new_js_bindings = use_new_js_bindings |
| 129 self.export_attribute = export_attribute | 168 self.export_attribute = export_attribute |
| 130 self.export_header = export_header | 169 self.export_header = export_header |
| 131 self.generate_non_variant_code = generate_non_variant_code | 170 self.generate_non_variant_code = generate_non_variant_code |
| 132 | 171 |
| 133 # Prepend the filename with a directory that matches the directory of the | |
| 134 # original .mojom file, relative to the import root. | |
| 135 def MatchMojomFilePath(self, filename): | |
| 136 return os.path.join(os.path.dirname(self.module.path), filename) | |
| 137 | |
| 138 def Write(self, contents, filename): | 172 def Write(self, contents, filename): |
| 139 if self.output_dir is None: | 173 if self.output_dir is None: |
| 140 print contents | 174 print contents |
| 141 return | 175 return |
| 142 full_path = os.path.join(self.output_dir, filename) | 176 full_path = os.path.join(self.output_dir, filename) |
| 143 WriteFile(contents, full_path) | 177 WriteFile(contents, full_path) |
| 144 | 178 |
| 145 def GenerateFiles(self, args): | 179 def GenerateFiles(self, args): |
| 146 raise NotImplementedError("Subclasses must override/implement this method") | 180 raise NotImplementedError("Subclasses must override/implement this method") |
| 147 | 181 |
| 148 def GetJinjaParameters(self): | 182 def GetJinjaParameters(self): |
| 149 """Returns default constructor parameters for the jinja environment.""" | 183 """Returns default constructor parameters for the jinja environment.""" |
| 150 return {} | 184 return {} |
| 151 | 185 |
| 152 def GetGlobals(self): | 186 def GetGlobals(self): |
| 153 """Returns global mappings for the template generation.""" | 187 """Returns global mappings for the template generation.""" |
| 154 return {} | 188 return {} |
| 155 | 189 |
| OLD | NEW |