Пример #1
0
        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));
        }
Пример #2
0
        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));
        }
Пример #3
0
        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));
        }
Пример #4
0
 public override int Compare(string comparator, int index, TextSpan span, StringComparison comparison)
 {
     return(_text.Compare(comparator, index, span, comparison));
 }