parseAsync method

  1. @override
void parseAsync(
  1. State<ChunkedData<StringReader>> state,
  2. ResultCallback<Object?> onDone
)
override

Implementation

@override
void parseAsync(
    State<ChunkedData<StringReader>> state, ResultCallback<Object?> onDone) {
  if (!backtrack(state)) {
    onDone(null);
    return;
  }

  final input = state.input;
  void parse() {
    final end = input.end;
    if (state.pos >= end && !input.isClosed) {
      input.sleep = true;
      input.handle(parse);
      return;
    }

    if (state.pos >= end) {
      onDone(Result(null));
    } else {
      state.fail<Object?>(const ErrorExpectedEndOfInput());
      onDone(null);
    }

    return;
  }

  parse();
}