Chromium Code Reviews| Index: pkg/barback/test/transformer/aggregate_many_to_many.dart |
| diff --git a/pkg/barback/test/transformer/aggregate_many_to_many.dart b/pkg/barback/test/transformer/aggregate_many_to_many.dart |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..620e81c085b26a636f6cc98f5b6b199378374bf5 |
| --- /dev/null |
| +++ b/pkg/barback/test/transformer/aggregate_many_to_many.dart |
| @@ -0,0 +1,37 @@ |
| +// Copyright (c) 2014, 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.test.transformer.aggregate_many_to_many; |
| + |
| +import 'dart:async'; |
| + |
| +import 'package:barback/barback.dart'; |
| +import 'package:path/path.dart' as path; |
| + |
| +import 'mock_aggregate.dart'; |
| + |
| +/// An [AggregateTransformer] that takes all assets in each directory with a |
| +/// given extension and adds to their contents. |
|
Bob Nystrom
2014/05/27 17:20:18
This is ambiguous. How about "all assets with a gi
nweiz
2014/05/27 21:03:10
Done.
|
| +class AggregateManyToManyTransformer extends MockAggregateTransformer { |
| + /// The extension of assets to combine. |
| + final String extension; |
| + |
| + AggregateManyToManyTransformer(this.extension); |
| + |
| + String doClassifyPrimary(AssetId id) { |
| + if (id.extension != ".$extension") return null; |
| + return path.url.dirname(id.path); |
| + } |
| + |
| + Future doApply(AggregateTransform transform) { |
| + return getPrimaryInputs(transform).asyncMap((asset) { |
| + return asset.readAsString().then((contents) { |
| + transform.addOutput(new Asset.fromString( |
| + asset.id, "modified $contents")); |
| + }); |
| + }).toList(); |
| + } |
| + |
| + String toString() => "aggregate $extension->many"; |
| +} |