Index: pkg/polymer/lib/src/transform/script_compactor.dart |
diff --git a/pkg/polymer/lib/src/transform/script_compactor.dart b/pkg/polymer/lib/src/transform/script_compactor.dart |
deleted file mode 100644 |
index 9a15d53652adbf1f48b13ca42e54859d36b08c9f..0000000000000000000000000000000000000000 |
--- a/pkg/polymer/lib/src/transform/script_compactor.dart |
+++ /dev/null |
@@ -1,128 +0,0 @@ |
-// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
-// for details. All rights reserved. Use of this source code is governed by a |
-// BSD-style license that can be found in the LICENSE file. |
- |
-/** Transfomer that combines multiple dart script tags into a single one. */ |
-library polymer.src.transform.script_compactor; |
- |
-import 'dart:async'; |
- |
-import 'package:barback/barback.dart'; |
-import 'package:html5lib/parser.dart' show parseFragment; |
-import 'package:path/path.dart' as path; |
- |
-import 'code_extractor.dart'; // import just for documentation. |
-import 'common.dart'; |
- |
-/** |
- * Combines Dart script tags into a single script tag, and creates a new Dart |
- * file that calls the main function of each of the original script tags. |
- * |
- * This transformer assumes that all script tags point to external files. To |
- * support script tags with inlined code, use this transformer after running |
- * [InlineCodeExtractor] on an earlier phase. |
- * |
- * Internally, this transformer will convert each script tag into an import |
- * statement to a library, and then uses `initPolymer` (see polymer.dart) to |
- * invoke the main method on each of these libraries and register any polymer |
- * elements annotated with `@CustomTag`. |
- */ |
-class ScriptCompactor extends Transformer with PolymerTransformer { |
- final TransformOptions options; |
- |
- ScriptCompactor(this.options); |
- |
- /** Only run on entry point .html files. */ |
- Future<bool> isPrimary(Asset input) => |
- new Future.value(options.isHtmlEntryPoint(input.id)); |
- |
- Future apply(Transform transform) { |
- var id = transform.primaryInput.id; |
- var logger = transform.logger; |
- return readPrimaryAsHtml(transform).then((document) { |
- var libraries = []; |
- bool changed = false; |
- var dartLoaderTag = null; |
- for (var tag in document.queryAll('script')) { |
- var src = tag.attributes['src']; |
- if (src != null) { |
- if (src == 'packages/polymer/boot.js') { |
- tag.remove(); |
- continue; |
- } |
- var last = src.split('/').last; |
- if (last == 'dart.js') { |
- dartLoaderTag = tag; |
- } |
- } |
- if (tag.attributes['type'] != 'application/dart') continue; |
- tag.remove(); |
- changed = true; |
- if (src == null) { |
- logger.warning('unexpected script without a src url. The ' |
- 'ScriptCompactor transformer should run after running the ' |
- 'InlineCodeExtractor', tag.sourceSpan); |
- continue; |
- } |
- var libraryId = resolve(id, src, logger, tag.sourceSpan); |
- |
- // TODO(sigmund): should we detect/remove duplicates? |
- if (libraryId == null) continue; |
- libraries.add(libraryId); |
- } |
- |
- if (!changed) { |
- transform.addOutput(transform.primaryInput); |
- return; |
- } |
- |
- var bootstrapId = id.addExtension('_bootstrap.dart'); |
- var filename = path.url.basename(bootstrapId.path); |
- |
- var bootstrapScript = parseFragment( |
- '<script type="application/dart" src="$filename"></script>'); |
- if (dartLoaderTag == null) { |
- document.body.nodes.add(bootstrapScript); |
- document.body.nodes.add(parseFragment( |
- '<script src="packages/browser/dart.js"></script>')); |
- } else if (dartLoaderTag.parent != document.body) { |
- document.body.nodes.add(bootstrapScript); |
- } else { |
- document.body.insertBefore(bootstrapScript, dartLoaderTag); |
- } |
- |
- var urls = libraries.map((id) => assetUrlFor(id, bootstrapId, logger)) |
- .where((url) => url != null).toList(); |
- var buffer = new StringBuffer()..write(_header); |
- for (int i = 0; i < urls.length; i++) { |
- buffer.writeln("import '${urls[i]}' as i$i;"); |
- } |
- buffer..write(_mainPrefix) |
- ..writeAll(urls.map((url) => " '$url',\n")) |
- ..write(_mainSuffix); |
- |
- transform.addOutput(new Asset.fromString(bootstrapId, buffer.toString())); |
- transform.addOutput(new Asset.fromString(id, document.outerHtml)); |
- }); |
- } |
-} |
- |
-const _header = """ |
-library app_bootstrap; |
- |
-import 'package:polymer/polymer.dart'; |
-import 'dart:mirrors' show currentMirrorSystem; |
- |
-"""; |
- |
-const _mainPrefix = """ |
- |
-void main() { |
- initPolymer([ |
-"""; |
- |
-// TODO(sigmund): investigate alternative to get the baseUri (dartbug.com/12612) |
-const _mainSuffix = """ |
- ], currentMirrorSystem().isolate.rootLibrary.uri.toString()); |
-} |
-"""; |