| Index: packages/when/example/read_json_file.dart
|
| diff --git a/packages/when/example/read_json_file.dart b/packages/when/example/read_json_file.dart
|
| new file mode 100755
|
| index 0000000000000000000000000000000000000000..3092ac8108dffb176cd460b516834bf82aadb3c2
|
| --- /dev/null
|
| +++ b/packages/when/example/read_json_file.dart
|
| @@ -0,0 +1,38 @@
|
| +
|
| +library when.example.read_json_file;
|
| +
|
| +import 'dart:async';
|
| +import 'dart:convert';
|
| +import 'dart:io';
|
| +
|
| +import 'package:when/when.dart';
|
| +
|
| +/// Reads and decodes JSON from [path] asynchronously.
|
| +///
|
| +/// If [path] does not exist, returns the result of calling [onAbsent].
|
| +Future readJsonFile(String path, {onAbsent()}) => _readJsonFile(
|
| + path, onAbsent, (file) => file.exists(), (file) => file.readAsString());
|
| +
|
| +/// Reads and decodes JSON from [path] synchronously.
|
| +///
|
| +/// If [path] does not exist, returns the result of calling [onAbsent].
|
| +readJsonFileSync(String path, {onAbsent()}) => _readJsonFile(
|
| + path, onAbsent, (file) => file.existsSync(),
|
| + (file) => file.readAsStringSync());
|
| +
|
| +_readJsonFile(String path, onAbsent(), exists(File file), read(File file)) {
|
| + var file = new File(path);
|
| + return when(
|
| + () => exists(file),
|
| + onSuccess: (doesExist) => doesExist ?
|
| + when(() => read(file), onSuccess: JSON.decode) :
|
| + onAbsent());
|
| +}
|
| +
|
| +main() {
|
| + var syncJson = readJsonFileSync('foo.json', onAbsent: () => {'foo': 'bar'});
|
| + print('Sync json: $syncJson');
|
| + readJsonFile('foo.json', onAbsent: () => {'foo': 'bar'}).then((asyncJson) {
|
| + print('Async json: $asyncJson');
|
| + });
|
| +}
|
|
|