parseOn method

  1. @override
Result<String> parseOn(
  1. Context context
)
override

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 (message != null) {
    // If we have a message we can switch to fast mode.
    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 is Failure) return result;
    final output =
        context.buffer.substring(context.position, result.position);
    return result.success(output);
  }
}