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

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: Minifying. 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
« no previous file with comments | « sdk/lib/html/scripts/htmlrenamer.py ('k') | sdk/lib/html/scripts/systemnative.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sdk/lib/html/scripts/systemhtml.py
diff --git a/sdk/lib/html/scripts/systemhtml.py b/sdk/lib/html/scripts/systemhtml.py
index 431f8007dec97c455fb18abb329fe90bbb65fe78..dbdb4ccaa29d86cc75e6e1df969ab95cedf3030b 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._library_name,
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)
@@ -866,32 +870,66 @@ class Dart2JSBackend(HtmlDartGenerator):
# ------------------------------------------------------------------------------
class DartLibraryEmitter():
- def __init__(self, multiemitter, template, dart_sources_dir):
+ def __init__(self, multiemitter, 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):
+ self._libraries = {
+ 'svg': DartLibrary('svg', template_loader, library_type, output_dir),
+ 'html': DartLibrary('html', template_loader, library_type, output_dir),
+ }
+
+ def AddFile(self, basename, library_name, path):
+ self._libraries[library_name].AddFile(path)
+
+ def Emit(self, emitter, auxiliary_dir):
+ for lib in self._libraries.values():
+ lib.Emit(emitter, auxiliary_dir)
« no previous file with comments | « sdk/lib/html/scripts/htmlrenamer.py ('k') | sdk/lib/html/scripts/systemnative.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698