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

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

Issue 11398002: Splitting SVG types out of dart:html. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Passing dartc. Created 8 years, 1 month 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: sdk/lib/html/scripts/systemhtml.py
diff --git a/sdk/lib/html/scripts/systemhtml.py b/sdk/lib/html/scripts/systemhtml.py
index 90729a9f82a41d5724aa514398e3abb42d4f5ef6..0d55223dc89631250d7e0270569d08d04e7a6afc 100644
--- a/sdk/lib/html/scripts/systemhtml.py
+++ b/sdk/lib/html/scripts/systemhtml.py
@@ -199,6 +199,7 @@ class HtmlDartInterfaceGenerator(object):
self._interface = interface
self._backend = backend
self._interface_type_info = self._type_registry.TypeInfo(self._interface.id)
+ self._library_name = self._renamer.GetLibraryName(self._interface)
def Generate(self):
if 'Callback' in self._interface.ext_attrs:
@@ -211,7 +212,8 @@ class HtmlDartInterfaceGenerator(object):
handlers = [operation for operation in self._interface.operations
if operation.id == 'handleEvent']
info = AnalyzeOperation(self._interface, handlers)
- code = self._library_emitter.FileEmitter(self._interface.id)
+ code = self._library_emitter.FileEmitter(self._interface.id,
+ self._library_name)
code.Emit(self._template_loader.Load('callback.darttemplate'))
code.Emit('typedef void $NAME($PARAMS);\n',
NAME=self._interface.id,
@@ -234,7 +236,7 @@ class HtmlDartInterfaceGenerator(object):
constructors.append(constructor_info)
factory_provider = '_' + interface_name + 'FactoryProvider'
factory_provider_emitter = self._library_emitter.FileEmitter(
- '_%sFactoryProvider' % interface_name)
+ '_%sFactoryProvider' % interface_name, self._library_name)
self._backend.EmitFactoryProvider(
constructor_info, factory_provider, factory_provider_emitter)
@@ -243,7 +245,8 @@ class HtmlDartInterfaceGenerator(object):
template = self._template_loader.Load(
'factoryprovider_Elements.darttemplate')
EmitHtmlElementFactoryConstructors(
- self._library_emitter.FileEmitter('_Elements', template),
+ self._library_emitter.FileEmitter('_Elements', self._library_name,
+ template),
infos,
self._interface.id,
self._interface_type_info.implementation_name(),
@@ -289,6 +292,7 @@ class HtmlDartInterfaceGenerator(object):
self._implementation_members_emitter = implementation_emitter.Emit(
self._backend.ImplementationTemplate(),
+ LIBRARYNAME=self._renamer.GetLibraryName(self._interface),
Anton Muhin 2012/11/09 13:13:23 LIBRARYNAME=self._library_name?
blois 2012/11/09 18:21:56 Done.
CLASSNAME=self._interface_type_info.implementation_name(),
EXTENDS=' extends %s' % base_class if base_class else '',
IMPLEMENTS=implements_str,
@@ -322,7 +326,7 @@ class HtmlDartInterfaceGenerator(object):
self._backend.ImplementsMergedMembers()):
# Merged members are implemented in target interface implementation.
return emitter.Emitter()
- return self._library_emitter.FileEmitter(basename)
+ return self._library_emitter.FileEmitter(basename, self._library_name)
def _DartType(self, type_name):
return self._type_registry.DartType(type_name)
@@ -865,32 +869,70 @@ class Dart2JSBackend(HtmlDartGenerator):
# ------------------------------------------------------------------------------
class DartLibraryEmitter():
- def __init__(self, multiemitter, template, dart_sources_dir):
+ def __init__(self, multiemitter, template, dart_sources_dir, dart_libraries):
self._multiemitter = multiemitter
self._template = template
self._dart_sources_dir = dart_sources_dir
self._path_to_emitter = {}
+ self._dart_libraries = dart_libraries
- def FileEmitter(self, basename, template=None):
+ def FileEmitter(self, basename, library_name, template=None):
path = os.path.join(self._dart_sources_dir, '%s.dart' % basename)
if not path in self._path_to_emitter:
emitter = self._multiemitter.FileEmitter(path)
if not template is None:
emitter = emitter.Emit(template)
self._path_to_emitter[path] = emitter
+
+ self._dart_libraries.AddFile(basename, library_name, path)
return self._path_to_emitter[path]
- def EmitLibrary(self, library_file_path, auxiliary_dir):
+ def EmitLibraries(self, auxiliary_dir):
+ self._dart_libraries.Emit(self._multiemitter, auxiliary_dir)
+
+# ------------------------------------------------------------------------------
+class DartLibrary():
+ def __init__(self, name, template_loader, library_type, output_dir):
+ self._template = template_loader.Load(
+ '%s_%s.darttemplate' % (name, library_type))
+ self._dart_path = os.path.join(
+ output_dir, '%s_%s.dart' % (name, library_type))
+ self._paths = []
+
+ def AddFile(self, path):
+ self._paths.append(path)
+
+ def Emit(self, emitter, auxiliary_dir):
def massage_path(path):
# The most robust way to emit path separators is to use / always.
return path.replace('\\', '/')
- library_emitter = self._multiemitter.FileEmitter(library_file_path)
- library_file_dir = os.path.dirname(library_file_path)
+ library_emitter = emitter.FileEmitter(self._dart_path)
+ library_file_dir = os.path.dirname(self._dart_path)
auxiliary_dir = os.path.relpath(auxiliary_dir, library_file_dir)
imports_emitter = library_emitter.Emit(
self._template, AUXILIARY_DIR=massage_path(auxiliary_dir))
- for path in sorted(self._path_to_emitter.keys()):
+
+ for path in sorted(self._paths):
relpath = os.path.relpath(path, library_file_dir)
imports_emitter.Emit(
"part '$PATH';\n", PATH=massage_path(relpath))
+
+# ------------------------------------------------------------------------------
+
+class DartLibraries():
+ def __init__(self, template_loader, library_type, output_dir):
Anton Muhin 2012/11/09 13:13:23 it might be more natural to use a dictionary here:
blois 2012/11/09 18:21:56 Good point, I had more logic here where the member
+ self._svg_lib = DartLibrary(
+ 'svg', template_loader, library_type, output_dir)
+ self._html_lib = DartLibrary(
+ 'html', template_loader, library_type, output_dir)
+
+ def AddFile(self, basename, library_name, path):
+ if library_name == 'svg':
+ self._svg_lib.AddFile(path)
+ else:
+ self._html_lib.AddFile(path)
+
+ def Emit(self, emitter, auxiliary_dir):
+ self._html_lib.Emit(emitter, auxiliary_dir)
+ self._svg_lib.Emit(emitter, auxiliary_dir)

Powered by Google App Engine
This is Rietveld 408576698