parseAsync method
Implementation
@override
void parseAsync(
State<ChunkedData<StringReader>> state, ResultCallback<int> onDone) {
if (!backtrack(state)) {
onDone(null);
return;
}
final input = state.input;
final start = input.start;
input.buffering++;
void parse() {
final data = input.data;
final end = input.end;
if (state.pos >= end && !input.isClosed) {
input.sleep = true;
input.handle(parse);
return;
}
input.buffering--;
int? c;
if (state.pos < end) {
final source = data.source!;
c = source.runeAt(state.pos - start);
if (f(c)) {
state.pos += c > 0xffff ? 2 : 1;
onDone(Result(c));
return;
}
}
state.fail<Object?>(ErrorUnexpectedCharacter(c));
onDone(null);
}
parse();
}