22// for details. All rights reserved. Use of this source code is governed by a
33// BSD-style license that can be found in the LICENSE file.
44
5+ import 'dart:async' ;
56import 'dart:convert' ;
67
78import 'package:file/file.dart' ;
@@ -16,40 +17,52 @@ class ReplayFile extends ReplayFileSystemEntity implements File {
1617 /// Creates a new `ReplayFile` .
1718 ReplayFile (ReplayFileSystemImpl fileSystem, String identifier)
1819 : super (fileSystem, identifier) {
19- Converter <dynamic , dynamic > convertThis = fileReviver (fileSystem);
20- Converter <dynamic , dynamic > convertFutureThis =
21- convertThis.fuse (kFutureReviver);
20+ Converter <String , File > reviveFile = new ReviveFile (fileSystem);
21+ Converter <String , Future <File >> reviveFileAsFuture =
22+ reviveFile.fuse (const ToFuture <File >());
23+ Converter <String , List <int >> blobToBytes = new BlobToBytes (fileSystem);
24+ Converter <String , String > blobToString = blobToBytes.fuse (UTF8 .decoder);
25+ Converter <String , RandomAccessFile > reviveRandomAccessFile =
26+ new ReviveRandomAccessFile (fileSystem);
27+ // TODO(tvolkert) remove `as`: https://github.com/dart-lang/sdk/issues/28748
28+ Converter <String , List <String >> lineSplitter =
29+ const LineSplitter () as Converter <String , List <String >>;
30+ Converter <String , List <String >> blobToLines =
31+ blobToString.fuse (lineSplitter);
32+ Converter <String , Stream <List <int >>> blobToByteStream = blobToBytes
33+ .fuse (const Listify <List <int >>())
34+ .fuse (const ToStream <List <int >>());
2235
2336 methods.addAll (< Symbol , Converter <dynamic , dynamic >> {
24- #rename: convertFutureThis ,
25- #renameSync: convertThis ,
26- #delete: convertFutureThis ,
27- #create: convertFutureThis ,
28- #createSync: kPassthrough ,
29- #copy: convertFutureThis ,
30- #copySync: convertThis ,
31- #length: kFutureReviver ,
32- #lengthSync: kPassthrough ,
33- #lastModified: kDateTimeReviver. fuse (kFutureReviver ),
34- #lastModifiedSync: kDateTimeReviver ,
35- #open: randomAccessFileReviver (fileSystem) .fuse (kFutureReviver ),
36- #openSync: randomAccessFileReviver (fileSystem) ,
37- #openRead: kStreamReviver ,
38- #openWrite: ioSinkReviver (fileSystem),
39- #readAsBytes: blobReviver (fileSystem) .fuse (kFutureReviver ),
40- #readAsBytesSync: blobReviver (fileSystem) ,
41- #readAsString: kFutureReviver ,
42- #readAsStringSync: kPassthrough ,
43- #readAsLines: kFutureReviver ,
44- #readAsLinesSync: kPassthrough ,
45- #writeAsBytes: convertFutureThis ,
46- #writeAsBytesSync: kPassthrough ,
47- #writeAsString: convertFutureThis ,
48- #writeAsStringSync: kPassthrough ,
37+ #rename: reviveFileAsFuture ,
38+ #renameSync: reviveFile ,
39+ #delete: reviveFileAsFuture ,
40+ #create: reviveFileAsFuture ,
41+ #createSync: const Passthrough < Null >() ,
42+ #copy: reviveFileAsFuture ,
43+ #copySync: reviveFile ,
44+ #length: const ToFuture < int >() ,
45+ #lengthSync: const Passthrough < int >() ,
46+ #lastModified: DateTimeCodec .deserialize. fuse (const ToFuture < DateTime >() ),
47+ #lastModifiedSync: DateTimeCodec .deserialize ,
48+ #open: reviveRandomAccessFile .fuse (const ToFuture < RandomAccessFile >() ),
49+ #openSync: reviveRandomAccessFile ,
50+ #openRead: blobToByteStream ,
51+ #openWrite: new ReviveIOSink (fileSystem),
52+ #readAsBytes: blobToBytes .fuse (const ToFuture < List < int >>() ),
53+ #readAsBytesSync: blobToBytes ,
54+ #readAsString: blobToString. fuse ( const ToFuture < String >()) ,
55+ #readAsStringSync: blobToString ,
56+ #readAsLines: blobToLines. fuse ( const ToFuture < List < String >>()) ,
57+ #readAsLinesSync: blobToLines ,
58+ #writeAsBytes: reviveFileAsFuture ,
59+ #writeAsBytesSync: const Passthrough < Null >() ,
60+ #writeAsString: reviveFileAsFuture ,
61+ #writeAsStringSync: const Passthrough < Null >() ,
4962 });
5063
5164 properties.addAll (< Symbol , Converter <dynamic , dynamic >> {
52- #absolute: convertThis ,
65+ #absolute: reviveFile ,
5366 });
5467 }
5568}
0 commit comments