| 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 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 214 'webkitSpeechChange': 'speechChange', | 214 'webkitSpeechChange': 'speechChange', |
| 215 'webkitsourceclose': 'sourceClose', | 215 'webkitsourceclose': 'sourceClose', |
| 216 'webkitsourceended': 'sourceEnded', | 216 'webkitsourceended': 'sourceEnded', |
| 217 'webkitsourceopen': 'sourceOpen', | 217 'webkitsourceopen': 'sourceOpen', |
| 218 'webkitTransitionEnd': 'transitionEnd', | 218 'webkitTransitionEnd': 'transitionEnd', |
| 219 'write': 'write', | 219 'write': 'write', |
| 220 'writeend': 'writeEnd', | 220 'writeend': 'writeEnd', |
| 221 'writestart': 'writeStart' | 221 'writestart': 'writeStart' |
| 222 } | 222 } |
| 223 | 223 |
| 224 | |
| 225 | |
| 226 # Information for generating element constructors. | 224 # Information for generating element constructors. |
| 227 # | 225 # |
| 228 # TODO(sra): maybe remove all the argument complexity and use cascades. | 226 # TODO(sra): maybe remove all the argument complexity and use cascades. |
| 229 # | 227 # |
| 230 # var c = new CanvasElement(width: 100, height: 70); | 228 # var c = new CanvasElement(width: 100, height: 70); |
| 231 # var c = new CanvasElement()..width = 100..height = 70; | 229 # var c = new CanvasElement()..width = 100..height = 70; |
| 232 # | 230 # |
| 233 class ElementConstructorInfo(object): | 231 class ElementConstructorInfo(object): |
| 234 def __init__(self, name=None, tag=None, | 232 def __init__(self, name=None, tag=None, |
| 235 params=[], opt_params=[], | 233 params=[], opt_params=[], |
| (...skipping 236 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 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 786 def ImplementationClassName(self): | 789 def ImplementationClassName(self): |
| 787 return self._ImplClassName(self._html_interface_name) | 790 return self._ImplClassName(self._html_interface_name) |
| 788 | 791 |
| 789 def SetImplementationEmitter(self, implementation_emitter): | 792 def SetImplementationEmitter(self, implementation_emitter): |
| 790 self._dart_code = implementation_emitter | 793 self._dart_code = implementation_emitter |
| 791 | 794 |
| 792 def ImplementsMergedMembers(self): | 795 def ImplementsMergedMembers(self): |
| 793 return True | 796 return True |
| 794 | 797 |
| 795 def _ImplClassName(self, type_name): | 798 def _ImplClassName(self, type_name): |
| 796 return '_%sImpl' % type_name | 799 name = type_name |
| 800 if type_name in nativified_classes: |
| 801 name = nativified_classes[type_name] |
| 802 return '_%sImpl' % name |
| 797 | 803 |
| 798 def StartInterface(self): | 804 def StartInterface(self): |
| 799 interface = self._interface | 805 interface = self._interface |
| 800 interface_name = interface.id | 806 interface_name = interface.id |
| 801 | 807 |
| 802 self._class_name = self._ImplClassName(self._html_interface_name) | 808 self._class_name = self._ImplClassName(self._html_interface_name) |
| 803 | 809 |
| 804 base = None | 810 base = None |
| 805 if interface.parents: | 811 if interface.parents: |
| 806 supertype = interface.parents[0].type.id | 812 supertype = interface.parents[0].type.id |
| (...skipping 453 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1260 | 1266 |
| 1261 library_emitter = self._emitters.FileEmitter(library_file_path) | 1267 library_emitter = self._emitters.FileEmitter(library_file_path) |
| 1262 library_file_dir = os.path.dirname(library_file_path) | 1268 library_file_dir = os.path.dirname(library_file_path) |
| 1263 auxiliary_dir = os.path.relpath(auxiliary_dir, library_file_dir) | 1269 auxiliary_dir = os.path.relpath(auxiliary_dir, library_file_dir) |
| 1264 imports_emitter = library_emitter.Emit( | 1270 imports_emitter = library_emitter.Emit( |
| 1265 self._template, AUXILIARY_DIR=massage_path(auxiliary_dir)) | 1271 self._template, AUXILIARY_DIR=massage_path(auxiliary_dir)) |
| 1266 for path in sorted(self._dart_sources_list): | 1272 for path in sorted(self._dart_sources_list): |
| 1267 relpath = os.path.relpath(path, library_file_dir) | 1273 relpath = os.path.relpath(path, library_file_dir) |
| 1268 imports_emitter.Emit( | 1274 imports_emitter.Emit( |
| 1269 "#source('$PATH');\n", PATH=massage_path(relpath)) | 1275 "#source('$PATH');\n", PATH=massage_path(relpath)) |
| OLD | NEW |