| Index: lib/plugin_transformer.dart
|
| diff --git a/lib/plugin_transformer.dart b/lib/plugin_transformer.dart
|
| deleted file mode 100644
|
| index 5cfa9f5109e4bedd2229bb8afb5ace97bd495b8e..0000000000000000000000000000000000000000
|
| --- a/lib/plugin_transformer.dart
|
| +++ /dev/null
|
| @@ -1,85 +0,0 @@
|
| -// Copyright (c) 2015, 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.
|
| -library initialize.plugin_transformer;
|
| -
|
| -import 'dart:async';
|
| -import 'package:analyzer/analyzer.dart';
|
| -import 'package:barback/barback.dart';
|
| -import 'package:source_maps/refactor.dart';
|
| -import 'package:source_span/source_span.dart';
|
| -
|
| -/// Abstract transformer which will call [initEntry] for every [InitEntry]
|
| -/// expression found in the bootstrap file. This is used to centralize logic
|
| -/// for initializers which want to do something special at transform time.
|
| -abstract class InitializePluginTransformer extends AggregateTransformer {
|
| - // Path to the bootstrap file created by the initialize transformer.
|
| - final String _bootstrapFile;
|
| -
|
| - // All the extra assets that were found, if child classes override
|
| - // classifyPrimary this lets them get at the other assets easily.
|
| - final allAssets = <Asset>[];
|
| -
|
| - TransformLogger _logger;
|
| -
|
| - InitializePluginTransformer(this._bootstrapFile);
|
| -
|
| - classifyPrimary(AssetId id) =>
|
| - _bootstrapFile == id.path ? _bootstrapFile : null;
|
| -
|
| - Future apply(AggregateTransform transform) {
|
| - _logger = transform.logger;
|
| - var done = new Completer();
|
| - var listener = transform.primaryInputs.listen((Asset asset) {
|
| - allAssets.add(asset);
|
| - var id = asset.id;
|
| - if (id.path != _bootstrapFile) return;
|
| - // Calls initEntry for each InitEntry expression.
|
| - asset.readAsString().then((dartCode) {
|
| - var url = id.path.startsWith('lib/')
|
| - ? 'package:${id.package}/${id.path.substring(4)}'
|
| - : id.path;
|
| - var source = new SourceFile(dartCode, url: url);
|
| - var transaction = new TextEditTransaction(dartCode, source);
|
| - (parseCompilationUnit(dartCode,
|
| - suppressErrors: true) as dynamic).declarations.firstWhere(
|
| - (d) => d.name.toString() ==
|
| - 'main').functionExpression.body.block.statements.firstWhere(
|
| - (statement) {
|
| - return statement.expression.target.toString() == 'initializers' &&
|
| - statement.expression.methodName.toString() == 'addAll';
|
| - }).expression.argumentList.arguments[0].elements
|
| - .where((arg) => arg is InstanceCreationExpression)
|
| - .forEach((e) => initEntry(e, transaction));
|
| -
|
| - // Apply any transformations.
|
| - if (!transaction.hasEdits) {
|
| - transform.addOutput(asset);
|
| - } else {
|
| - var printer = transaction.commit();
|
| - printer.build(url);
|
| - transform.addOutput(new Asset.fromString(id, printer.text));
|
| - }
|
| - done.complete();
|
| - });
|
| - });
|
| -
|
| - // Make sure all the assets are read before returning.
|
| - return Future.wait([listener.asFuture(), done.future]);
|
| - }
|
| -
|
| - /// Gets called once for each generated [InitEntry] expression in the
|
| - /// bootstrap file. A [TextEditTransaction] is supplied so that the user can
|
| - /// modify the expression however they see fit.
|
| - void initEntry(
|
| - InstanceCreationExpression expression, TextEditTransaction transaction);
|
| -
|
| - /// Convenience method to delete an Initializer expression completely.
|
| - void removeInitializer(
|
| - InstanceCreationExpression expression, TextEditTransaction transaction) {
|
| - // Delete the entire line.
|
| - var line = transaction.file.getLine(expression.offset);
|
| - transaction.edit(transaction.file.getOffset(line),
|
| - transaction.file.getOffset(line + 1), '');
|
| - }
|
| -}
|
|
|