| OLD | NEW |
| (Empty) |
| 1 | |
| 2 library when.example.read_json_file; | |
| 3 | |
| 4 import 'dart:async'; | |
| 5 import 'dart:convert'; | |
| 6 import 'dart:io'; | |
| 7 | |
| 8 import 'package:when/when.dart'; | |
| 9 | |
| 10 /// Reads and decodes JSON from [path] asynchronously. | |
| 11 /// | |
| 12 /// If [path] does not exist, returns the result of calling [onAbsent]. | |
| 13 Future readJsonFile(String path, {onAbsent()}) => _readJsonFile( | |
| 14 path, onAbsent, (file) => file.exists(), (file) => file.readAsString()); | |
| 15 | |
| 16 /// Reads and decodes JSON from [path] synchronously. | |
| 17 /// | |
| 18 /// If [path] does not exist, returns the result of calling [onAbsent]. | |
| 19 readJsonFileSync(String path, {onAbsent()}) => _readJsonFile( | |
| 20 path, onAbsent, (file) => file.existsSync(), | |
| 21 (file) => file.readAsStringSync()); | |
| 22 | |
| 23 _readJsonFile(String path, onAbsent(), exists(File file), read(File file)) { | |
| 24 var file = new File(path); | |
| 25 return when( | |
| 26 () => exists(file), | |
| 27 onSuccess: (doesExist) => doesExist ? | |
| 28 when(() => read(file), onSuccess: JSON.decode) : | |
| 29 onAbsent()); | |
| 30 } | |
| 31 | |
| 32 main() { | |
| 33 var syncJson = readJsonFileSync('foo.json', onAbsent: () => {'foo': 'bar'}); | |
| 34 print('Sync json: $syncJson'); | |
| 35 readJsonFile('foo.json', onAbsent: () => {'foo': 'bar'}).then((asyncJson) { | |
| 36 print('Async json: $asyncJson'); | |
| 37 }); | |
| 38 } | |
| OLD | NEW |