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 """Generates JavaScript source files from a mojom.Module.""" | 5 """Generates JavaScript source files from a mojom.Module.""" |
6 | 6 |
7 import mojom.generate.generator as generator | 7 import mojom.generate.generator as generator |
8 import mojom.generate.module as mojom | 8 import mojom.generate.module as mojom |
9 import mojom.generate.pack as pack | 9 import mojom.generate.pack as pack |
10 from mojom.generate.template_expander import UseJinja | 10 from mojom.generate.template_expander import UseJinja |
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
243 "is_string_pointer_field": IsStringPointerField, | 243 "is_string_pointer_field": IsStringPointerField, |
244 "is_handle_field": IsHandleField, | 244 "is_handle_field": IsHandleField, |
245 "js_type": JavaScriptType, | 245 "js_type": JavaScriptType, |
246 "stylize_method": generator.StudlyCapsToCamel, | 246 "stylize_method": generator.StudlyCapsToCamel, |
247 "validate_array_params": JavaScriptValidateArrayParams, | 247 "validate_array_params": JavaScriptValidateArrayParams, |
248 "validate_handle_params": JavaScriptValidateHandleParams, | 248 "validate_handle_params": JavaScriptValidateHandleParams, |
249 "validate_string_params": JavaScriptValidateStringParams, | 249 "validate_string_params": JavaScriptValidateStringParams, |
250 "validate_struct_params": JavaScriptValidateStructParams, | 250 "validate_struct_params": JavaScriptValidateStructParams, |
251 } | 251 } |
252 | 252 |
253 @UseJinja("js_templates/module.js.tmpl", filters=js_filters) | 253 def GetParameters(self): |
254 def GenerateJsModule(self): | |
255 return { | 254 return { |
256 "namespace": self.module.namespace, | 255 "namespace": self.module.namespace, |
257 "imports": self.GetImports(), | 256 "imports": self.GetImports(), |
258 "kinds": self.module.kinds, | 257 "kinds": self.module.kinds, |
259 "enums": self.module.enums, | 258 "enums": self.module.enums, |
260 "module": self.module, | 259 "module": self.module, |
261 "structs": self.GetStructs() + self.GetStructsFromMethods(), | 260 "structs": self.GetStructs() + self.GetStructsFromMethods(), |
262 "interfaces": self.module.interfaces, | 261 "interfaces": self.module.interfaces, |
263 "imported_interfaces": self.GetImportedInterfaces(), | 262 "imported_interfaces": self.GetImportedInterfaces(), |
264 } | 263 } |
265 | 264 |
| 265 @UseJinja("js_templates/module.amd.tmpl", filters=js_filters) |
| 266 def GenerateAMDModule(self): |
| 267 return self.GetParameters() |
| 268 |
| 269 @UseJinja("js_templates/module.html.tmpl", filters=js_filters) |
| 270 def GenerateHTMLModule(self): |
| 271 return self.GetParameters() |
| 272 |
266 def GenerateFiles(self, args): | 273 def GenerateFiles(self, args): |
267 self.Write(self.GenerateJsModule(), "%s.js" % self.module.name) | 274 self.Write(self.GenerateAMDModule(), "%s.js" % self.module.name) |
| 275 self.Write(self.GenerateHTMLModule(), "%s.html" % self.module.name) |
268 | 276 |
269 def GetImports(self): | 277 def GetImports(self): |
270 # Since each import is assigned a variable in JS, they need to have unique | 278 # Since each import is assigned a variable in JS, they need to have unique |
271 # names. | 279 # names. |
272 counter = 1 | 280 counter = 1 |
273 for each in self.module.imports: | 281 for each in self.module.imports: |
274 each["unique_name"] = "import" + str(counter) | 282 each["unique_name"] = "import" + str(counter) |
275 counter += 1 | 283 counter += 1 |
276 return self.module.imports | 284 return self.module.imports |
277 | 285 |
278 def GetImportedInterfaces(self): | 286 def GetImportedInterfaces(self): |
279 interface_to_import = {}; | 287 interface_to_import = {}; |
280 for each_import in self.module.imports: | 288 for each_import in self.module.imports: |
281 for each_interface in each_import["module"].interfaces: | 289 for each_interface in each_import["module"].interfaces: |
282 name = each_interface.name | 290 name = each_interface.name |
283 interface_to_import[name] = each_import["unique_name"] + "." + name | 291 interface_to_import[name] = each_import["unique_name"] + "." + name |
284 return interface_to_import; | 292 return interface_to_import; |
285 | 293 |
OLD | NEW |