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 |