blob: f6bf2b80de834e2a04258d38bd3f1484a82c9531 [file] [log] [blame]
// 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.
library barback.transformer_group;
import 'dart:async';
/// A [TransformerGroup] encapsulates a phased collection of transformers.
///
/// A transformer group is defined like a collection of phases, such as you
/// might pass to [Barback.updateTransformers]. Input assets are transformed by
/// the first phase, whose results are passed to the second phase, and so on.
///
/// However, from the perspective of someone using a [TransformerGroup], it
/// works just like a [Transformer]. It can be included in phases, and will run
/// in parallel to other transformers or groups in those phases. Other
/// transformers and groups will be unable to see any intermediate assets that
/// are generated by one phase of the group and consumed by another. Phases
/// after the one containing the group will be able to see its outputs, though.
class TransformerGroup {
/// The phases that comprise this group.
///
/// Each element of the inner iterable must be either a [Transformer] or a
/// [TransformerGroup].
final Iterable<Iterable> phases;
TransformerGroup(Iterable<Iterable> phases)
: this.phases = phases.map((phase) => phase.toList()).toList();
}