public Result <TextSpan, TextSpan> Parse(ParseText text, TextSpan span) { if (span.Length >= _constant.Length) { int compareLength = span.Length > _constant.Length ? _constant.Length : span.Length; if (text.Compare(_constant, 0, new TextSpan(span.Start, compareLength), _comparisonType) == 0) { return(new Success <TextSpan, TextSpan>(new TextSpan(span.Start, compareLength), TextSpan.FromBounds(span.Start + compareLength, span.End))); } } return(new Unmatched <TextSpan, TextSpan>(span)); }
public Result <TextSpan, TextSpan> Parse(ParseText text, TextSpan span) { var parsed = _parser.Parse(text, span); if (parsed.HasResult) { var result = parsed.Result; if (result.Length >= _match.Length) { var compareSpan = result.Take(_match.Length); if (text.Compare(_match, 0, compareSpan, _comparisonType) == 0) { return(new Success <TextSpan, TextSpan>(compareSpan, result.Skip(_match.Length) + parsed.Next)); } } } return(new Unmatched <TextSpan, TextSpan>(parsed.Next)); }
public override int Compare(string comparator, int index, TextSpan span, StringComparison comparison) { CheckSpanInLength(span); return(_text.Compare(comparator, index, new TextSpan(_span.Start + span.Start, span.Length), comparison)); }
public override int Compare(string comparator, int index, TextSpan span, StringComparison comparison) { return(_text.Compare(comparator, index, span, comparison)); }