| 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 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 211 'webkitSpeechChange': 'speechChange', | 211 'webkitSpeechChange': 'speechChange', |
| 212 'webkitsourceclose': 'sourceClose', | 212 'webkitsourceclose': 'sourceClose', |
| 213 'webkitsourceended': 'sourceEnded', | 213 'webkitsourceended': 'sourceEnded', |
| 214 'webkitsourceopen': 'sourceOpen', | 214 'webkitsourceopen': 'sourceOpen', |
| 215 'webkitTransitionEnd': 'transitionEnd', | 215 'webkitTransitionEnd': 'transitionEnd', |
| 216 'write': 'write', | 216 'write': 'write', |
| 217 'writeend': 'writeEnd', | 217 'writeend': 'writeEnd', |
| 218 'writestart': 'writeStart' | 218 'writestart': 'writeStart' |
| 219 } | 219 } |
| 220 | 220 |
| 221 | |
| 222 | |
| 223 # Information for generating element constructors. | 221 # Information for generating element constructors. |
| 224 # | 222 # |
| 225 # TODO(sra): maybe remove all the argument complexity and use cascades. | 223 # TODO(sra): maybe remove all the argument complexity and use cascades. |
| 226 # | 224 # |
| 227 # var c = new CanvasElement(width: 100, height: 70); | 225 # var c = new CanvasElement(width: 100, height: 70); |
| 228 # var c = new CanvasElement()..width = 100..height = 70; | 226 # var c = new CanvasElement()..width = 100..height = 70; |
| 229 # | 227 # |
| 230 class ElementConstructorInfo(object): | 228 class ElementConstructorInfo(object): |
| 231 def __init__(self, name=None, tag=None, | 229 def __init__(self, name=None, tag=None, |
| 232 params=[], opt_params=[], | 230 params=[], opt_params=[], |
| (...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 472 | 470 |
| 473 def __init__(self, system, interface): | 471 def __init__(self, system, interface): |
| 474 super(HtmlDartInterfaceGenerator, self).__init__( | 472 super(HtmlDartInterfaceGenerator, self).__init__( |
| 475 system._database, interface) | 473 system._database, interface) |
| 476 self._system = system | 474 self._system = system |
| 477 self._shared = system._shared | 475 self._shared = system._shared |
| 478 self._html_interface_name = system._renamer.RenameInterface(self._interface) | 476 self._html_interface_name = system._renamer.RenameInterface(self._interface) |
| 479 self._backend = system._backend.ImplementationGenerator(self._interface) | 477 self._backend = system._backend.ImplementationGenerator(self._interface) |
| 480 | 478 |
| 481 def StartInterface(self): | 479 def StartInterface(self): |
| 482 if not self._interface.id in _merged_html_interfaces: | 480 if (not self._interface.id in _merged_html_interfaces and |
| 481 # Don't re-generate types that have been converted to native dart types. |
| 482 self._html_interface_name not in nativified_classes): |
| 483 path = '%s.dart' % self._html_interface_name | 483 path = '%s.dart' % self._html_interface_name |
| 484 self._interface_emitter = self._system._CreateEmitter(path) | 484 self._interface_emitter = self._system._CreateEmitter(path) |
| 485 else: | 485 else: |
| 486 self._interface_emitter = emitter.Emitter() | 486 self._interface_emitter = emitter.Emitter() |
| 487 | 487 |
| 488 template_file = 'interface_%s.darttemplate' % self._html_interface_name | 488 template_file = 'interface_%s.darttemplate' % self._html_interface_name |
| 489 interface_template = (self._system._templates.TryLoad(template_file) or | 489 interface_template = (self._system._templates.TryLoad(template_file) or |
| 490 self._system._templates.Load('interface.darttemplate')
) | 490 self._system._templates.Load('interface.darttemplate')
) |
| 491 | 491 |
| 492 typename = self._html_interface_name | 492 typename = self._html_interface_name |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 556 self._top_level_emitter) = self._interface_emitter.Emit( | 556 self._top_level_emitter) = self._interface_emitter.Emit( |
| 557 interface_template + '$!TOP_LEVEL', | 557 interface_template + '$!TOP_LEVEL', |
| 558 ID=typename, | 558 ID=typename, |
| 559 EXTENDS=implements_str) | 559 EXTENDS=implements_str) |
| 560 | 560 |
| 561 self._type_comment_emitter.Emit("/// @domName $DOMNAME", | 561 self._type_comment_emitter.Emit("/// @domName $DOMNAME", |
| 562 DOMNAME=self._interface.doc_js_name) | 562 DOMNAME=self._interface.doc_js_name) |
| 563 | 563 |
| 564 if self._backend.HasImplementation(): | 564 if self._backend.HasImplementation(): |
| 565 if not self._interface.id in _merged_html_interfaces: | 565 if not self._interface.id in _merged_html_interfaces: |
| 566 filename = '%sImpl.dart' % self._html_interface_name | 566 name = self._html_interface_name |
| 567 if self._html_interface_name in nativified_classes: |
| 568 name = nativified_classes[self._html_interface_name] |
| 569 filename = '%sImpl.dart' % name |
| 567 else: | 570 else: |
| 568 filename = '%sImpl_Merged.dart' % self._html_interface_name | 571 filename = '%sImpl_Merged.dart' % self._html_interface_name |
| 569 self._implementation_emitter = self._system._CreateEmitter(filename) | 572 self._implementation_emitter = self._system._CreateEmitter(filename) |
| 570 else: | 573 else: |
| 571 self._implementation_emitter = emitter.Emitter() | 574 self._implementation_emitter = emitter.Emitter() |
| 572 self._backend.SetImplementationEmitter(self._implementation_emitter) | 575 self._backend.SetImplementationEmitter(self._implementation_emitter) |
| 573 self._implementation_members_emitter = self._backend.StartInterface() | 576 self._implementation_members_emitter = self._backend.StartInterface() |
| 574 | 577 |
| 575 for constructor_info in constructors: | 578 for constructor_info in constructors: |
| 576 constructor_info.GenerateFactoryInvocation( | 579 constructor_info.GenerateFactoryInvocation( |
| (...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 776 def ImplementationClassName(self): | 779 def ImplementationClassName(self): |
| 777 return self._ImplClassName(self._html_interface_name) | 780 return self._ImplClassName(self._html_interface_name) |
| 778 | 781 |
| 779 def SetImplementationEmitter(self, implementation_emitter): | 782 def SetImplementationEmitter(self, implementation_emitter): |
| 780 self._dart_code = implementation_emitter | 783 self._dart_code = implementation_emitter |
| 781 | 784 |
| 782 def ImplementsMergedMembers(self): | 785 def ImplementsMergedMembers(self): |
| 783 return True | 786 return True |
| 784 | 787 |
| 785 def _ImplClassName(self, type_name): | 788 def _ImplClassName(self, type_name): |
| 786 return '_%sImpl' % type_name | 789 name = type_name |
| 790 if type_name in nativified_classes: |
| 791 name = nativified_classes[type_name] |
| 792 return '_%sImpl' % name |
| 787 | 793 |
| 788 def StartInterface(self): | 794 def StartInterface(self): |
| 789 interface = self._interface | 795 interface = self._interface |
| 790 interface_name = interface.id | 796 interface_name = interface.id |
| 791 | 797 |
| 792 self._class_name = self._ImplClassName(self._html_interface_name) | 798 self._class_name = self._ImplClassName(self._html_interface_name) |
| 793 | 799 |
| 794 base = None | 800 base = None |
| 795 if interface.parents: | 801 if interface.parents: |
| 796 supertype = interface.parents[0].type.id | 802 supertype = interface.parents[0].type.id |
| (...skipping 433 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1230 def GenerateLibraries(self, dart_files): | 1236 def GenerateLibraries(self, dart_files): |
| 1231 auxiliary_dir = os.path.relpath(self._auxiliary_dir, self._output_dir) | 1237 auxiliary_dir = os.path.relpath(self._auxiliary_dir, self._output_dir) |
| 1232 self._GenerateLibFile( | 1238 self._GenerateLibFile( |
| 1233 'html_dart2js.darttemplate', | 1239 'html_dart2js.darttemplate', |
| 1234 os.path.join(self._output_dir, 'html_dart2js.dart'), | 1240 os.path.join(self._output_dir, 'html_dart2js.dart'), |
| 1235 dart_files, | 1241 dart_files, |
| 1236 AUXILIARY_DIR=systembase.MassagePath(auxiliary_dir)) | 1242 AUXILIARY_DIR=systembase.MassagePath(auxiliary_dir)) |
| 1237 | 1243 |
| 1238 def Finish(self): | 1244 def Finish(self): |
| 1239 pass | 1245 pass |
| OLD | NEW |