| Index: observatory_pub_packages/polymer/src/build/build_filter.dart
|
| ===================================================================
|
| --- observatory_pub_packages/polymer/src/build/build_filter.dart (revision 0)
|
| +++ observatory_pub_packages/polymer/src/build/build_filter.dart (working copy)
|
| @@ -0,0 +1,51 @@
|
| +// 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.
|
| +
|
| +/// Final phase of the polymer transformation: removes any files that are not
|
| +/// needed for deployment.
|
| +library polymer.src.build.build_filter;
|
| +
|
| +import 'dart:async';
|
| +
|
| +import 'package:barback/barback.dart';
|
| +import 'package:code_transformers/messages/build_logger.dart';
|
| +import 'common.dart';
|
| +
|
| +/// Removes any files not needed for deployment, such as internal build
|
| +/// artifacts and non-entry HTML files.
|
| +class BuildFilter extends Transformer with PolymerTransformer {
|
| + final TransformOptions options;
|
| + BuildFilter(this.options);
|
| +
|
| + isPrimary(AssetId id) {
|
| + // nothing is filtered in debug mode
|
| + return options.releaseMode &&
|
| + // TODO(sigmund): remove this exclusion once we have dev_transformers
|
| + // (dartbug.com/14187)
|
| + !id.path.startsWith('lib/') &&
|
| + // may filter non-entry HTML files and internal artifacts
|
| + (id.extension == '.html' || id.extension == _DATA_EXTENSION) &&
|
| + // keep any entry points
|
| + !options.isHtmlEntryPoint(id);
|
| + }
|
| +
|
| + apply(Transform transform) {
|
| + transform.consumePrimary();
|
| + if (transform.primaryInput.id.extension == _DATA_EXTENSION) {
|
| + return null;
|
| + }
|
| + var logger = new BuildLogger(transform,
|
| + convertErrorsToWarnings: !options.releaseMode,
|
| + detailsUri: 'http://goo.gl/5HPeuP');
|
| + return readPrimaryAsHtml(transform, logger).then((document) {
|
| + // Keep .html files that don't use polymer, since the app developer might
|
| + // have non-polymer entrypoints.
|
| + if (document.querySelectorAll('polymer-element').isEmpty) {
|
| + transform.addOutput(transform.primaryInput);
|
| + }
|
| + });
|
| + }
|
| +}
|
| +
|
| +const String _DATA_EXTENSION = '._data';
|
|
|