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

Unified Diff: lib/html/scripts/systemhtml.py

Issue 10986048: Get rid of System classes for backend generators. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: lib/html/scripts/systemhtml.py
diff --git a/lib/html/scripts/systemhtml.py b/lib/html/scripts/systemhtml.py
index 10f74623ac14e00be4fca5f6b7e28e91ee023a46..0648276e6908d7f0c830a69d07d7ab64b47a4bf8 100644
--- a/lib/html/scripts/systemhtml.py
+++ b/lib/html/scripts/systemhtml.py
@@ -438,26 +438,16 @@ class HtmlSystemShared(object):
class HtmlInterfacesSystem(System):
- def __init__(self, options, dart_library_generator, backend):
+ def __init__(self, options, dart_library_generator, create_generator_backend):
super(HtmlInterfacesSystem, self).__init__(options)
self._dart_library_generator = dart_library_generator
- self._backend = backend
+ self._create_generator_backend = create_generator_backend
self._shared = HtmlSystemShared(options)
- self._dart_file_paths = []
self._elements_factory_emitter = None
def ProcessInterface(self, interface):
- HtmlDartInterfaceGenerator(self, interface).Generate()
-
- def ProcessCallback(self, interface, info):
- """Generates a typedef for the callback interface."""
- code = self._CreateEmitter('%s.dart' % interface.id)
- code.Emit(self._templates.Load('callback.darttemplate'))
- code.Emit('typedef $TYPE $NAME($PARAMS);\n',
- NAME=interface.id,
- TYPE=DartType(info.type_name),
- PARAMS=info.ParametersImplementationDeclaration(DartType))
- self._backend.ProcessCallback(interface, info)
+ backend = self._create_generator_backend(interface)
+ HtmlDartInterfaceGenerator(self, interface, backend).Generate()
def _CreateEmitter(self, filename):
return self._dart_library_generator.CreateFileEmitter(filename)
@@ -467,13 +457,23 @@ class HtmlInterfacesSystem(System):
class HtmlDartInterfaceGenerator(BaseGenerator):
"""Generates dart interface and implementation for the DOM IDL interface."""
- def __init__(self, system, interface):
+ def __init__(self, system, interface, backend):
super(HtmlDartInterfaceGenerator, self).__init__(
- system._database, interface)
+ system._database, system._type_registry, interface)
self._system = system
+ self._backend = backend
self._shared = system._shared
self._html_interface_name = system._renamer.RenameInterface(self._interface)
- self._backend = system._backend.ImplementationGenerator(self._interface)
+
+ def GenerateCallback(self, info):
+ """Generates a typedef for the callback interface."""
+ code = self._system._CreateEmitter('%s.dart' % self._interface.id)
+ code.Emit(self._system._templates.Load('callback.darttemplate'))
+ code.Emit('typedef $TYPE $NAME($PARAMS);\n',
+ NAME=self._interface.id,
+ TYPE=DartType(info.type_name),
+ PARAMS=info.ParametersImplementationDeclaration(DartType))
+ self._backend.GenerateCallback(info)
def StartInterface(self):
if not self._interface.id in _merged_html_interfaces:
@@ -760,15 +760,15 @@ class HtmlGeneratorDummyBackend(object):
# TODO(jmesserly): inheritance is probably not the right way to factor this long
# term, but it makes merging better for now.
-class HtmlDart2JSClassGenerator(Dart2JSInterfaceGenerator):
+class Dart2JSGeneratorBackend(Dart2JSInterfaceGenerator):
Anton Muhin 2012/09/26 14:20:36 if you want to keep both generator and backend, I
podivilov 2012/09/26 15:02:04 Renamed to Dart2JSBackend. Interface vs. Implement
"""Generates a dart2js class for the dart:html library from a DOM IDL
interface.
"""
- def __init__(self, system, interface):
- super(HtmlDart2JSClassGenerator, self).__init__(
- system, interface, None, None)
- self._html_interface_name = system._renamer.RenameInterface(self._interface)
+ def __init__(self, interface, options):
+ super(Dart2JSGeneratorBackend, self).__init__(
+ options, interface, None, None)
+ self._html_interface_name = options.renamer.RenameInterface(self._interface)
def HasImplementation(self):
return not (IsPureInterface(self._interface.id) or
@@ -817,8 +817,8 @@ class HtmlDart2JSClassGenerator(Dart2JSInterfaceGenerator):
implements.append('JavaScriptIndexingBehavior')
template_file = 'impl_%s.darttemplate' % self._html_interface_name
- template = (self._system._templates.TryLoad(template_file) or
- self._system._templates.Load('dart2js_impl.darttemplate'))
+ template = (self._template_loader.TryLoad(template_file) or
+ self._template_loader.Load('dart2js_impl.darttemplate'))
self._members_emitter = self._dart_code.Emit(
template,
#class $CLASSNAME$EXTENDS$IMPLEMENTS$NATIVESPEC {
@@ -837,9 +837,9 @@ class HtmlDart2JSClassGenerator(Dart2JSInterfaceGenerator):
def EmitFactoryProvider(self, constructor_info, factory_provider, emitter):
template_file = ('factoryprovider_%s.darttemplate' %
self._html_interface_name)
- template = self._system._templates.TryLoad(template_file)
+ template = self._template_loader.TryLoad(template_file)
if not template:
- template = self._system._templates.Load('factoryprovider.darttemplate')
+ template = self._template_loader.Load('factoryprovider.darttemplate')
emitter.Emit(
template,
@@ -894,7 +894,7 @@ class HtmlDart2JSClassGenerator(Dart2JSInterfaceGenerator):
# TODO(sra): Use separate mixins for typed array implementations of List<T>.
if self._interface.id != 'NodeList':
template_file = 'immutable_list_mixin.darttemplate'
- template = self._system._templates.Load(template_file)
+ template = self._template_loader.Load(template_file)
self._members_emitter.Emit(template, E=self._DartType(element_type))
def AddAttribute(self, attribute, html_name, read_only):
@@ -1217,16 +1217,8 @@ class HtmlDart2JSClassGenerator(Dart2JSInterfaceGenerator):
if element_type and requires_indexer: return True
return False
-# ------------------------------------------------------------------------------
-
-class HtmlDart2JSSystem(System):
-
- def __init__(self, options):
- super(HtmlDart2JSSystem, self).__init__(options)
-
- def ImplementationGenerator(self, interface):
- return HtmlDart2JSClassGenerator(self, interface)
+# ------------------------------------------------------------------------------
class DartLibraryEmitter():
def __init__(self, emitters, template, dart_sources_dir):

Powered by Google App Engine
This is Rietveld 408576698