parseOn method

  1. @override
  2. @noBoundsChecks
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
@noBoundsChecks
Result<String> parseOn(Context context) {
  final buffer = context.buffer;
  final position = context.position;
  if (position < buffer.length) {
    var nextPosition = position + 1;
    if (_isLeadSurrogate(buffer.codeUnitAt(position)) &&
        nextPosition < buffer.length &&
        _isTrailSurrogate(buffer.codeUnitAt(nextPosition))) {
      nextPosition++;
    }
    return context.success(
      buffer.substring(position, nextPosition),
      nextPosition,
    );
  }
  return context.failure(message);
}