OLD | NEW |
| (Empty) |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | |
2 // for details. All rights reserved. Use of this source code is governed by a | |
3 // BSD-style license that can be found in the LICENSE file. | |
4 | |
5 library barback.test.transformer.rewrite; | |
6 | |
7 import 'dart:async'; | |
8 | |
9 import 'package:barback/barback.dart'; | |
10 | |
11 import 'mock.dart'; | |
12 | |
13 /// A [Transformer] that takes assets ending with one extension and generates | |
14 /// assets with a given extension. | |
15 /// | |
16 /// Appends the output extension to the contents of the input file. | |
17 class RewriteTransformer extends MockTransformer { | |
18 final String from; | |
19 final String to; | |
20 | |
21 /// Creates a transformer that rewrites assets whose extension is [from] to | |
22 /// one whose extension is [to]. | |
23 /// | |
24 /// [to] may be a space-separated list in which case multiple outputs will be | |
25 /// created for each input. | |
26 RewriteTransformer(this.from, this.to); | |
27 | |
28 bool doIsPrimary(AssetId id) => id.extension == ".$from"; | |
29 | |
30 Future doApply(Transform transform) { | |
31 return getPrimary(transform).then((input) { | |
32 return Future.wait(to.split(" ").map((extension) { | |
33 var id = input.id.changeExtension(".$extension"); | |
34 return input.readAsString().then((content) { | |
35 transform.addOutput(new Asset.fromString(id, "$content.$extension")); | |
36 }); | |
37 })); | |
38 }); | |
39 } | |
40 | |
41 String toString() => "$from->$to"; | |
42 } | |
OLD | NEW |