Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 #!/usr/bin/python | 1 #!/usr/bin/python |
| 2 # Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 2 # Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 3 # for details. All rights reserved. Use of this source code is governed by a | 3 # for details. All rights reserved. Use of this source code is governed by a |
| 4 # BSD-style license that can be found in the LICENSE file. | 4 # BSD-style license that can be found in the LICENSE file. |
| 5 | 5 |
| 6 """This module provides shared functionality for the system to generate | 6 """This module provides shared functionality for the system to generate |
| 7 Dart:html APIs from the IDL database.""" | 7 Dart:html APIs from the IDL database.""" |
| 8 | 8 |
| 9 import emitter | 9 import emitter |
| 10 | 10 |
| (...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 210 'webkitSpeechChange': 'speechChange', | 210 'webkitSpeechChange': 'speechChange', |
| 211 'webkitsourceclose': 'sourceClose', | 211 'webkitsourceclose': 'sourceClose', |
| 212 'webkitsourceended': 'sourceEnded', | 212 'webkitsourceended': 'sourceEnded', |
| 213 'webkitsourceopen': 'sourceOpen', | 213 'webkitsourceopen': 'sourceOpen', |
| 214 'webkitTransitionEnd': 'transitionEnd', | 214 'webkitTransitionEnd': 'transitionEnd', |
| 215 'write': 'write', | 215 'write': 'write', |
| 216 'writeend': 'writeEnd', | 216 'writeend': 'writeEnd', |
| 217 'writestart': 'writeStart' | 217 'writestart': 'writeStart' |
| 218 } | 218 } |
| 219 | 219 |
| 220 | |
| 221 | |
| 222 # Information for generating element constructors. | 220 # Information for generating element constructors. |
| 223 # | 221 # |
| 224 # TODO(sra): maybe remove all the argument complexity and use cascades. | 222 # TODO(sra): maybe remove all the argument complexity and use cascades. |
| 225 # | 223 # |
| 226 # var c = new CanvasElement(width: 100, height: 70); | 224 # var c = new CanvasElement(width: 100, height: 70); |
| 227 # var c = new CanvasElement()..width = 100..height = 70; | 225 # var c = new CanvasElement()..width = 100..height = 70; |
| 228 # | 226 # |
| 229 class ElementConstructorInfo(object): | 227 class ElementConstructorInfo(object): |
| 230 def __init__(self, name=None, tag=None, | 228 def __init__(self, name=None, tag=None, |
| 231 params=[], opt_params=[], | 229 params=[], opt_params=[], |
| (...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 471 | 469 |
| 472 def __init__(self, system, interface): | 470 def __init__(self, system, interface): |
| 473 super(HtmlDartInterfaceGenerator, self).__init__( | 471 super(HtmlDartInterfaceGenerator, self).__init__( |
| 474 system._database, interface) | 472 system._database, interface) |
| 475 self._system = system | 473 self._system = system |
| 476 self._shared = system._shared | 474 self._shared = system._shared |
| 477 self._html_interface_name = system._renamer.RenameInterface(self._interface) | 475 self._html_interface_name = system._renamer.RenameInterface(self._interface) |
| 478 self._backend = system._backend.ImplementationGenerator(self._interface) | 476 self._backend = system._backend.ImplementationGenerator(self._interface) |
| 479 | 477 |
| 480 def StartInterface(self): | 478 def StartInterface(self): |
| 481 if not self._interface.id in _merged_html_interfaces: | 479 if (not self._interface.id in _merged_html_interfaces and |
|
vsm
2012/09/24 19:31:10
Can you add a comment here?
Emily Fortuna
2012/09/24 19:42:58
Done.
| |
| 480 self._html_interface_name not in nativified_classes.values()): | |
| 482 path = '%s.dart' % self._html_interface_name | 481 path = '%s.dart' % self._html_interface_name |
| 483 self._interface_emitter = self._system._CreateEmitter(path) | 482 self._interface_emitter = self._system._CreateEmitter(path) |
| 484 else: | 483 else: |
| 485 self._interface_emitter = emitter.Emitter() | 484 self._interface_emitter = emitter.Emitter() |
| 486 | 485 |
| 487 template_file = 'interface_%s.darttemplate' % self._html_interface_name | 486 template_file = 'interface_%s.darttemplate' % self._html_interface_name |
| 488 interface_template = (self._system._templates.TryLoad(template_file) or | 487 interface_template = (self._system._templates.TryLoad(template_file) or |
| 489 self._system._templates.Load('interface.darttemplate') ) | 488 self._system._templates.Load('interface.darttemplate') ) |
| 490 | 489 |
| 491 typename = self._html_interface_name | 490 typename = self._html_interface_name |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 555 self._top_level_emitter) = self._interface_emitter.Emit( | 554 self._top_level_emitter) = self._interface_emitter.Emit( |
| 556 interface_template + '$!TOP_LEVEL', | 555 interface_template + '$!TOP_LEVEL', |
| 557 ID=typename, | 556 ID=typename, |
| 558 EXTENDS=implements_str) | 557 EXTENDS=implements_str) |
| 559 | 558 |
| 560 self._type_comment_emitter.Emit("/// @domName $DOMNAME", | 559 self._type_comment_emitter.Emit("/// @domName $DOMNAME", |
| 561 DOMNAME=self._interface.doc_js_name) | 560 DOMNAME=self._interface.doc_js_name) |
| 562 | 561 |
| 563 if self._backend.HasImplementation(): | 562 if self._backend.HasImplementation(): |
| 564 if not self._interface.id in _merged_html_interfaces: | 563 if not self._interface.id in _merged_html_interfaces: |
| 565 filename = '%sImpl.dart' % self._html_interface_name | 564 name = self._html_interface_name |
| 565 if self._html_interface_name in nativified_classes: | |
| 566 name = nativified_classes[self._html_interface_name] | |
| 567 filename = '%sImpl.dart' % name | |
| 566 else: | 568 else: |
| 567 filename = '%sImpl_Merged.dart' % self._html_interface_name | 569 filename = '%sImpl_Merged.dart' % self._html_interface_name |
| 568 self._implementation_emitter = self._system._CreateEmitter(filename) | 570 self._implementation_emitter = self._system._CreateEmitter(filename) |
| 569 else: | 571 else: |
| 570 self._implementation_emitter = emitter.Emitter() | 572 self._implementation_emitter = emitter.Emitter() |
| 571 self._backend.SetImplementationEmitter(self._implementation_emitter) | 573 self._backend.SetImplementationEmitter(self._implementation_emitter) |
| 572 self._implementation_members_emitter = self._backend.StartInterface() | 574 self._implementation_members_emitter = self._backend.StartInterface() |
| 573 | 575 |
| 574 for constructor_info in constructors: | 576 for constructor_info in constructors: |
| 575 constructor_info.GenerateFactoryInvocation( | 577 constructor_info.GenerateFactoryInvocation( |
| (...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 775 def ImplementationClassName(self): | 777 def ImplementationClassName(self): |
| 776 return self._ImplClassName(self._html_interface_name) | 778 return self._ImplClassName(self._html_interface_name) |
| 777 | 779 |
| 778 def SetImplementationEmitter(self, implementation_emitter): | 780 def SetImplementationEmitter(self, implementation_emitter): |
| 779 self._dart_code = implementation_emitter | 781 self._dart_code = implementation_emitter |
| 780 | 782 |
| 781 def ImplementsMergedMembers(self): | 783 def ImplementsMergedMembers(self): |
| 782 return True | 784 return True |
| 783 | 785 |
| 784 def _ImplClassName(self, type_name): | 786 def _ImplClassName(self, type_name): |
| 785 return '_%sImpl' % type_name | 787 name = type_name |
| 788 if type_name in nativified_classes: | |
| 789 name = nativified_classes[type_name] | |
| 790 return '_%sImpl' % name | |
| 786 | 791 |
| 787 def StartInterface(self): | 792 def StartInterface(self): |
| 788 interface = self._interface | 793 interface = self._interface |
| 789 interface_name = interface.id | 794 interface_name = interface.id |
| 790 | 795 |
| 791 self._class_name = self._ImplClassName(self._html_interface_name) | 796 self._class_name = self._ImplClassName(self._html_interface_name) |
| 792 | 797 |
| 793 base = None | 798 base = None |
| 794 if interface.parents: | 799 if interface.parents: |
| 795 supertype = interface.parents[0].type.id | 800 supertype = interface.parents[0].type.id |
| (...skipping 433 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1229 def GenerateLibraries(self, dart_files): | 1234 def GenerateLibraries(self, dart_files): |
| 1230 auxiliary_dir = os.path.relpath(self._auxiliary_dir, self._output_dir) | 1235 auxiliary_dir = os.path.relpath(self._auxiliary_dir, self._output_dir) |
| 1231 self._GenerateLibFile( | 1236 self._GenerateLibFile( |
| 1232 'html_dart2js.darttemplate', | 1237 'html_dart2js.darttemplate', |
| 1233 os.path.join(self._output_dir, 'html_dart2js.dart'), | 1238 os.path.join(self._output_dir, 'html_dart2js.dart'), |
| 1234 dart_files, | 1239 dart_files, |
| 1235 AUXILIARY_DIR=systembase.MassagePath(auxiliary_dir)) | 1240 AUXILIARY_DIR=systembase.MassagePath(auxiliary_dir)) |
| 1236 | 1241 |
| 1237 def Finish(self): | 1242 def Finish(self): |
| 1238 pass | 1243 pass |
| OLD | NEW |