Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(144)

Side by Side Diff: lib/html/scripts/systemhtml.py

Issue 10941047: Don't generate FooList if it behaves like List<Foo> exactly. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698