Index: sdk/lib/_internal/pub/lib/src/barback/excluding_aggregate_transformer.dart |
diff --git a/sdk/lib/_internal/pub/lib/src/barback/excluding_aggregate_transformer.dart b/sdk/lib/_internal/pub/lib/src/barback/excluding_aggregate_transformer.dart |
index 8a5983992cdabb2ef5c2091de53c2632de7c205f..47e4e9e5cf739a9796791859a2e7649d6db02fa9 100644 |
--- a/sdk/lib/_internal/pub/lib/src/barback/excluding_aggregate_transformer.dart |
+++ b/sdk/lib/_internal/pub/lib/src/barback/excluding_aggregate_transformer.dart |
@@ -8,55 +8,39 @@ import 'dart:async'; |
import 'package:barback/barback.dart'; |
+import '../barback.dart'; |
+ |
/// Decorates an inner [AggregateTransformer] and handles including and |
/// excluding primary inputs. |
class ExcludingAggregateTransformer extends AggregateTransformer { |
- /// If [includes] or [excludes] is non-null, wraps [inner] in an |
+ /// If [id] defines includes or excludes, wraps [inner] in an |
/// [ExcludingAggregateTransformer] that handles those. |
/// |
/// Otherwise, just returns [inner] unmodified. |
static AggregateTransformer wrap(AggregateTransformer inner, |
- Set<String> includes, Set<String> excludes) { |
- if (includes == null && excludes == null) return inner; |
+ TransformerId id) { |
+ if (!id.hasExclusions) return inner; |
if (inner is LazyAggregateTransformer) { |
return new _LazyExcludingAggregateTransformer( |
- inner as LazyAggregateTransformer, includes, excludes); |
+ inner as LazyAggregateTransformer, id); |
} else if (inner is DeclaringAggregateTransformer) { |
return new _DeclaringExcludingAggregateTransformer( |
- inner as DeclaringAggregateTransformer, includes, excludes); |
+ inner as DeclaringAggregateTransformer, id); |
} else { |
- return new ExcludingAggregateTransformer._(inner, includes, excludes); |
+ return new ExcludingAggregateTransformer._(inner, id); |
} |
} |
final AggregateTransformer _inner; |
- /// The set of asset paths which should be included. |
- /// |
- /// If `null`, all non-excluded assets are allowed. Otherwise, only included |
- /// assets are allowed. |
- final Set<String> _includes; |
- |
- /// The set of assets which should be excluded. |
- /// |
- /// Exclusions are applied after inclusions. |
- final Set<String> _excludes; |
+ /// The id containing rules for which assets to include or exclude. |
+ final TransformerId _id; |
- ExcludingAggregateTransformer._(this._inner, this._includes, this._excludes); |
+ ExcludingAggregateTransformer._(this._inner, this._id); |
classifyPrimary(AssetId id) { |
- // TODO(rnystrom): Support globs in addition to paths. See #17093. |
- if (_includes != null) { |
- // If there are any includes, it must match one of them. |
- if (!_includes.contains(id.path)) return null; |
- } |
- |
- // It must not be excluded. |
- if (_excludes != null && _excludes.contains(id.path)) { |
- return null; |
- } |
- |
+ if (!_id.canTransform(id.path)) return null; |
return _inner.classifyPrimary(id); |
} |
@@ -69,8 +53,8 @@ class _DeclaringExcludingAggregateTransformer |
extends ExcludingAggregateTransformer |
implements DeclaringAggregateTransformer { |
_DeclaringExcludingAggregateTransformer(DeclaringAggregateTransformer inner, |
- Set<String> includes, Set<String> excludes) |
- : super._(inner as AggregateTransformer, includes, excludes); |
+ TransformerId id) |
+ : super._(inner as AggregateTransformer, id); |
Future declareOutputs(DeclaringAggregateTransform transform) => |
(_inner as DeclaringAggregateTransformer).declareOutputs(transform); |
@@ -80,6 +64,6 @@ class _LazyExcludingAggregateTransformer |
extends _DeclaringExcludingAggregateTransformer |
implements LazyAggregateTransformer { |
_LazyExcludingAggregateTransformer(DeclaringAggregateTransformer inner, |
- Set<String> includes, Set<String> excludes) |
- : super(inner, includes, excludes); |
+ TransformerId id) |
+ : super(inner, id); |
} |