Index: pkg/polymer/lib/src/build/script_compactor.dart |
diff --git a/pkg/polymer/lib/src/build/script_compactor.dart b/pkg/polymer/lib/src/build/script_compactor.dart |
index 40546489798e9fed789df9b58a58477c70a77e2e..dfb25cf5f66e1a42ddfa71701b93696c823c182d 100644 |
--- a/pkg/polymer/lib/src/build/script_compactor.dart |
+++ b/pkg/polymer/lib/src/build/script_compactor.dart |
@@ -10,6 +10,7 @@ import 'dart:convert'; |
import 'package:html5lib/dom.dart' show Document, Element, Text; |
import 'package:html5lib/dom_parsing.dart'; |
+import 'package:html5lib/parser.dart' show parseFragment; |
import 'package:analyzer/src/generated/ast.dart'; |
import 'package:analyzer/src/generated/element.dart' hide Element; |
import 'package:analyzer/src/generated/element.dart' as analyzer show Element; |
@@ -70,12 +71,6 @@ class _ScriptCompactor extends PolymerTransformer { |
/// included on each custom element definition). |
List<AssetId> entryLibraries; |
- /// The id of the main Dart program. |
- AssetId mainLibraryId; |
- |
- /// Script tag that loads the Dart entry point. |
- Element mainScriptTag; |
- |
/// Initializers that will register custom tags or invoke `initMethod`s. |
final List<_Initializer> initializers = []; |
@@ -130,41 +125,27 @@ class _ScriptCompactor extends PolymerTransformer { |
tag.remove(); |
continue; |
} |
- if (tag.attributes['type'] != 'application/dart') continue; |
- if (src == null) { |
- logger.warning('unexpected script without a src url. The ' |
+ if (tag.attributes['type'] == 'application/dart;component=1') { |
+ logger.warning('unexpected script. The ' |
'ScriptCompactor transformer should run after running the ' |
- 'InlineCodeExtractor', span: tag.sourceSpan); |
- continue; |
- } |
- if (mainLibraryId != null) { |
- logger.warning('unexpected script. Only one Dart script tag ' |
- 'per document is allowed.', span: tag.sourceSpan); |
- tag.remove(); |
- continue; |
+ 'ImportInliner', span: tag.sourceSpan); |
} |
- mainLibraryId = uriToAssetId(docId, src, logger, tag.sourceSpan); |
- mainScriptTag = tag; |
} |
} |
/// Emits the main HTML and Dart bootstrap code for the application. If there |
/// were not Dart entry point files, then this simply emits the original HTML. |
Future _emitNewEntrypoint(_) { |
- if (mainScriptTag == null) { |
- // We didn't find any main library, nothing to do. |
+ if (entryLibraries.isEmpty) { |
+ // We didn't find code, nothing to do. |
transform.addOutput(transform.primaryInput); |
return null; |
} |
- // Emit the bootstrap .dart file |
- mainScriptTag.attributes['src'] = path.url.basename(bootstrapId.path); |
- entryLibraries.add(mainLibraryId); |
- |
return _initResolver() |
.then(_extractUsesOfMirrors) |
.then(_emitFiles) |
- .then((_) => resolver.release()); |
+ .whenComplete(() => resolver.release()); |
} |
/// Load a resolver that computes information for every library in |
@@ -359,7 +340,7 @@ class _ScriptCompactor extends PolymerTransformer { |
generator.writeTopLevelDeclarations(code); |
code.writeln('\nvoid main() {'); |
generator.writeInitCall(code); |
- code.writeln(' configureForDeployment(['); |
+ code.writeln(' startPolymer(['); |
// Include initializers to switch from mirrors_loader to static_loader. |
for (var init in initializers) { |
@@ -367,9 +348,14 @@ class _ScriptCompactor extends PolymerTransformer { |
code.write(" $initCode,\n"); |
} |
code..writeln(' ]);') |
- ..writeln(' i${entryLibraries.length - 1}.main();') |
..writeln('}'); |
transform.addOutput(new Asset.fromString(bootstrapId, code.toString())); |
+ |
+ |
+ // Emit the bootstrap .dart file |
+ var srcUrl = path.url.basename(bootstrapId.path); |
+ document.body.nodes.add(parseFragment( |
+ '<script type="application/dart" src="$srcUrl"></script>')); |
transform.addOutput(new Asset.fromString(docId, document.outerHtml)); |
} |