parseOn method
Primitive method doing the actual parsing.
The method is overridden in concrete subclasses to implement the
parser specific logic. The methods takes a parse context
and
returns the resulting context, which is either a Success or
Failure context.
Implementation
@override
Result<String> parseOn(Context context) {
// If we have a message we can switch to fast mode.
if (message != null) {
final position = delegate.fastParseOn(context.buffer, context.position);
if (position < 0) {
return context.failure(message!);
}
final output = context.buffer.substring(context.position, position);
return context.success(output, position);
} else {
final result = delegate.parseOn(context);
if (result.isSuccess) {
final output =
context.buffer.substring(context.position, result.position);
return result.success(output);
}
return result.failure(result.message);
}
}