-
-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathparser.dart
More file actions
27 lines (24 loc) · 938 Bytes
/
parser.dart
File metadata and controls
27 lines (24 loc) · 938 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import 'package:org_parser/src/todo/grammar.dart';
import 'package:org_parser/src/todo/model.dart';
import 'package:petitparser/petitparser.dart';
final orgTodo = TodoParser().build();
class TodoParser extends TodoGrammar {
@override
Parser workflow() => super.workflow().castList<List<dynamic>?>().map((items) {
// Discard annotations for now
final todo = items[0]
?.map((state) => state[0] as String)
.toList(growable: false);
final done = items[1]
?.map((state) => state[0] as String)
.toList(growable: false);
// Last todo state is considered done if no done states are provided
if (done == null && todo != null && todo.isNotEmpty) {
return OrgTodoStates(
todo: todo.getRange(0, todo.length - 1),
done: [todo.last],
);
}
return OrgTodoStates(todo: todo, done: done);
});
}