Index: dart/sdk/lib/_internal/pub/asset/dart/serialize/get_input_transform.dart |
diff --git a/dart/sdk/lib/_internal/pub/asset/dart/serialize/get_input_transform.dart b/dart/sdk/lib/_internal/pub/asset/dart/serialize/get_input_transform.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..9ab6540b3f9b0c3c32de42adb31256fc9bf2123b |
--- /dev/null |
+++ b/dart/sdk/lib/_internal/pub/asset/dart/serialize/get_input_transform.dart |
@@ -0,0 +1,34 @@ |
+// 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 pub.asset.serialize.get_input_transform; |
+ |
+import 'dart:async'; |
+import 'dart:convert'; |
+ |
+import 'package:barback/barback.dart'; |
+ |
+import '../utils.dart'; |
+ |
+/// A mixin for transforms that support [getInput] and the associated suite of |
+/// methods. |
+abstract class GetInputTransform { |
+ Future<Asset> getInput(AssetId id); |
+ |
+ Future<String> readInputAsString(AssetId id, {Encoding encoding}) { |
+ if (encoding == null) encoding = UTF8; |
+ return getInput(id).then((input) => |
+ input.readAsString(encoding: encoding)); |
+ } |
+ |
+ Stream<List<int>> readInput(AssetId id) => |
+ futureStream(getInput(id).then((input) => input.read())); |
+ |
+ Future<bool> hasInput(AssetId id) { |
+ return getInput(id).then((_) => true).catchError((error) { |
+ if (error is AssetNotFoundException && error.id == id) return false; |
+ throw error; |
+ }); |
+ } |
+} |