parseText$Async method
Text = $TextChar* ;
Implementation
AsyncResult<String> parseText$Async(State<ChunkedParsingSink> state) {
final $0 = AsyncResult<String>();
String? $2;
var $3 = 0;
late int $4;
late bool $5;
late int $7;
int? $6;
void $1() {
while (true) {
switch ($3) {
case 0:
$4 = state.pos;
state.input.beginBuffering();
$5 = state.ignoreErrors;
state.ignoreErrors = true;
$3 = 2;
break;
case 1:
state.ignoreErrors = $5;
state.setOk(true);
state.input.endBuffering();
if (state.ok) {
final input = state.input;
final start = input.start;
$2 = input.data.substring($4 - start, state.pos - start);
}
$0.value = $2;
$0.isComplete = true;
state.input.handle = $0.onComplete;
$3 = -1;
return;
case 2:
$7 = state.pos;
$3 = 3;
break;
case 3:
final $9 = state.input;
if (state.pos >= $9.end && !$9.isClosed) {
$9.sleep = true;
$9.handle = $1;
$3 = 3;
return;
}
if (state.pos < $9.end) {
final c = $9.data.runeAt(state.pos - $9.start);
final $10 = !(c < 13 ? c == 10 : c <= 13 || c == 34);
if ($10) {
state.pos += c > 0xffff ? 2 : 1;
$6 = c;
state.setOk(true);
} else {
state.fail(const ErrorUnexpectedCharacter());
}
} else {
state.fail(const ErrorUnexpectedEndOfInput());
}
if (state.ok) {
// ignore: unused_local_variable
final $$ = $6!;
final $8 = (() => $$ != _separatorChar)();
if (!$8) {
state
.fail(ErrorMessage($7 - state.pos, 'Unexpected character'));
state.backtrack($7);
}
}
if (!state.ok) {
$3 = 1;
break;
}
$3 = 2;
break;
default:
throw StateError('Invalid state: ${$3}');
}
}
}
$1();
return $0;
}