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

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
« no previous file with comments | « lib/html/scripts/systemdart2js.py ('k') | lib/html/scripts/systemnative.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/html/scripts/systemhtml.py
diff --git a/lib/html/scripts/systemhtml.py b/lib/html/scripts/systemhtml.py
index 10f74623ac14e00be4fca5f6b7e28e91ee023a46..bdf2980f93caaa744a37940db90ac56c0bec6ae8 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, backend_factory):
super(HtmlInterfacesSystem, self).__init__(options)
self._dart_library_generator = dart_library_generator
- self._backend = backend
+ self._backend_factory = backend_factory
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._backend_factory(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,14 @@ 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 Dart2JSBackend(Dart2JSInterfaceGenerator):
"""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(Dart2JSBackend, 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 +816,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 +836,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 +893,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 +1216,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):
« no previous file with comments | « lib/html/scripts/systemdart2js.py ('k') | lib/html/scripts/systemnative.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698