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 257 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
268 | 268 |
269 @UseJinja("js_templates/module.html.tmpl", filters=js_filters) | 269 @UseJinja("js_templates/module.html.tmpl", filters=js_filters) |
270 def GenerateHTMLModule(self): | 270 def GenerateHTMLModule(self): |
271 return self.GetParameters() | 271 return self.GetParameters() |
272 | 272 |
273 def GenerateFiles(self, args): | 273 def GenerateFiles(self, args): |
274 self.Write(self.GenerateAMDModule(), "%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) | 275 self.Write(self.GenerateHTMLModule(), "%s.html" % self.module.name) |
276 | 276 |
277 def GetImports(self): | 277 def GetImports(self): |
278 # Since each import is assigned a variable in JS, they need to have unique | 278 used_names = set() |
279 # names. | 279 for each_import in self.module.imports: |
280 counter = 1 | 280 simple_name = each_import["module_name"].split(".")[0] |
281 for each in self.module.imports: | 281 |
282 each["unique_name"] = "import" + str(counter) | 282 # Since each import is assigned a variable in JS, they need to have unique |
| 283 # names. |
| 284 unique_name = simple_name |
| 285 counter = 0 |
| 286 while unique_name in used_names: |
| 287 counter += 1 |
| 288 unique_name = simple_name + str(counter) |
| 289 |
| 290 used_names.add(unique_name) |
| 291 each_import["unique_name"] = unique_name |
283 counter += 1 | 292 counter += 1 |
284 return self.module.imports | 293 return self.module.imports |
285 | 294 |
286 def GetImportedInterfaces(self): | 295 def GetImportedInterfaces(self): |
287 interface_to_import = {}; | 296 interface_to_import = {}; |
288 for each_import in self.module.imports: | 297 for each_import in self.module.imports: |
289 for each_interface in each_import["module"].interfaces: | 298 for each_interface in each_import["module"].interfaces: |
290 name = each_interface.name | 299 name = each_interface.name |
291 interface_to_import[name] = each_import["unique_name"] + "." + name | 300 interface_to_import[name] = each_import["unique_name"] + "." + name |
292 return interface_to_import; | 301 return interface_to_import; |
293 | 302 |
OLD | NEW |