Exemplo n.º 1
0
 public override int Match(MatchContent content)
 {
     if (content.Length < _text.Length)
     {
         return(NotMatch);
     }
     if (content.Direction == MatchDirection.Forward)
     {
         for (int i = 0; i < _text.Length; i++)
         {
             if (content[i] != _text[i])
             {
                 return(NotMatch);
             }
         }
     }
     else
     {
         for (int i = 0; i < _text.Length; i++)
         {
             if (content[i] != _text[_text.Length - 1 - i])
             {
                 return(NotMatch);
             }
         }
     }
     return(_text.Length);
 }
Exemplo n.º 2
0
 public override int Match(MatchContent content)
 {
     if (content.EndOfString())
     {
         return(NotMatch);
     }
     return(content.GetCurrentChar() == _ch ? 1 : NotMatch);
 }
 public override int Match(MatchContent content)
 {
     var count = content.CountWhile(_ch, _maxOccur);
     if (count < _minOccur)
     {
         return NotMatch;
     }
     return count;
 }
Exemplo n.º 4
0
        public override int Match(MatchContent content)
        {
            if (content.EndOfString())
            {
                return(NotMatch);
            }
            var ch = content.GetCurrentChar();

            return(ch >= _start && ch <= _end ? 1 : NotMatch);
        }
Exemplo n.º 5
0
        public override int Match(MatchContent content)
        {
            var count = content.CountUntil(_ch, _maxOccur);

            if (count < _minOccur)
            {
                return(NotMatch);
            }
            return(count);
        }
Exemplo n.º 6
0
        public override int Match(MatchContent content)
        {
            var count = content.CountWhileInRange(_start, _end, _maxOccur);

            if (count < _minOccur)
            {
                return(NotMatch);
            }
            return(count);
        }
Exemplo n.º 7
0
        public override int Match(MatchContent content)
        {
            var startIndex = content.StartIndex;
            var result     = _inner.Match(content);

            if (result != NotMatch)
            {
                content.AddGroup(_groupName, startIndex, result);
            }
            return(result);
        }
Exemplo n.º 8
0
        public static MatchResult Match(this Matcher matcher, string text, int startIndex = 0)
        {
            var mc     = new MatchContent(text, startIndex, MatchDirection.Forward);
            var result = matcher.Match(mc);

            if (result == Matcher.NotMatch)
            {
                return(null);
            }
            return(new MatchResult(result, mc));
        }
Exemplo n.º 9
0
 public override int Match(MatchContent content)
 {
     foreach (var m in _inner)
     {
         if (_isNegative ^ (m.Match(content) == NotMatch))
         {
             return(NotMatch);
         }
     }
     return(0);
 }
Exemplo n.º 10
0
 public void TestCaptureGroupMatcher()
 {
     var m = Matcher.CaptureGroup("g", Matcher.Repeat(Matcher.Char('a'), 1));
     {
         var c = new MatchContent("abc", 0, MatchDirection.Forward);
         Assert.Equal(1, m.Match(c));
         var g = c.GetGroup("g");
         Assert.NotNull(g);
         Assert.Equal(0, g.Value.StartIndex);
         Assert.Equal(1, g.Value.Count);
         Assert.Equal("a", g.Value.GetValue());
     }
     {
         var c = new MatchContent("abc", 0, MatchDirection.Backward);
         Assert.Equal(Matcher.NotMatch, m.Match(c));
         var g = c.GetGroup("g");
         Assert.Null(g);
     }
     {
         var c = new MatchContent("abc", 1, MatchDirection.Forward);
         Assert.Equal(Matcher.NotMatch, m.Match(c));
         var g = c.GetGroup("g");
         Assert.Null(g);
     }
     {
         var c = new MatchContent("abc", 1, MatchDirection.Backward);
         Assert.Equal(1, m.Match(c));
         var g = c.GetGroup("g");
         Assert.NotNull(g);
         Assert.Equal(0, g.Value.StartIndex);
         Assert.Equal(1, g.Value.Count);
         Assert.Equal("a", g.Value.GetValue());
     }
     {
         var c = new MatchContent("aaa", 0, MatchDirection.Forward);
         Assert.Equal(3, m.Match(c));
         var g = c.GetGroup("g");
         Assert.NotNull(g);
         Assert.Equal(0, g.Value.StartIndex);
         Assert.Equal(3, g.Value.Count);
         Assert.Equal("aaa", g.Value.GetValue());
     }
     {
         var c = new MatchContent("aaa", 3, MatchDirection.Backward);
         Assert.Equal(3, m.Match(c));
         var g = c.GetGroup("g");
         Assert.NotNull(g);
         Assert.Equal(0, g.Value.StartIndex);
         Assert.Equal(3, g.Value.Count);
         Assert.Equal("aaa", g.Value.GetValue());
     }
 }
Exemplo n.º 11
0
 public override int Match(MatchContent content)
 {
     if (content.Length < _text.Length)
     {
         return(NotMatch);
     }
     for (int i = 0; i < _text.Length; i++)
     {
         if (content[i] != _text[i])
         {
             return(NotMatch);
         }
     }
     return(_text.Length);
 }
Exemplo n.º 12
0
 public override int Match(MatchContent content)
 {
     if (content.Length < _upperCaseText.Length)
     {
         return(NotMatch);
     }
     for (int i = 0; i < _upperCaseText.Length; i++)
     {
         var ch = content[i];
         if (ch != _upperCaseText[i] && ch != _lowerCaseText[i])
         {
             return(NotMatch);
         }
     }
     return(_upperCaseText.Length);
 }
Exemplo n.º 13
0
        public override int Match(MatchContent content)
        {
            bool matchSuccess = false;

            foreach (var m in _inners)
            {
                var c = m.Match(content);
                if (c > 0)
                {
                    return(c);
                }
                if (c == 0)
                {
                    matchSuccess = true;
                }
            }
            return(matchSuccess ? 0 : NotMatch);
        }
Exemplo n.º 14
0
        public override int Match(MatchContent content)
        {
            int charCount = 0;

            foreach (var m in _inners)
            {
                var c = m.Match(content.Offset(charCount));
                if (c == NotMatch)
                {
                    return(NotMatch);
                }
                else
                {
                    charCount += c;
                }
            }
            return(charCount);
        }
Exemplo n.º 15
0
        public override int Match(MatchContent content)
        {
            var g = content.GetGroup(_groupName);

            if (g == null)
            {
                return(NotMatch);
            }
            var text = g.Value.GetValue();

            if (content.Length < text.Length)
            {
                return(NotMatch);
            }
            for (int i = 0; i < text.Length; i++)
            {
                if (content[i] != text[i])
                {
                    return(NotMatch);
                }
            }
            return(text.Length);
        }
Exemplo n.º 16
0
        public override int Match(MatchContent content)
        {
            int charCount = 0;

            if (content.Direction == MatchDirection.Forward)
            {
                for (int i = 0; i < _inners.Length; i++)
                {
                    var c = _inners[i].Match(content.Offset(charCount));
                    if (c == NotMatch)
                    {
                        return(NotMatch);
                    }
                    else
                    {
                        charCount += c;
                    }
                }
            }
            else
            {
                for (int i = _inners.Length - 1; i >= 0; i--)
                {
                    var c = _inners[i].Match(content.Offset(charCount));
                    if (c == NotMatch)
                    {
                        return(NotMatch);
                    }
                    else
                    {
                        charCount += c;
                    }
                }
            }
            return(charCount);
        }
Exemplo n.º 17
0
        public override int Match(MatchContent content)
        {
            int totalCharCount = 0;
            int count          = 0;

            while (true)
            {
                var currentCharCount = _inner.Match(content.Offset(totalCharCount));
                if (currentCharCount <= 0)
                {
                    return(count >= _minOccur ? totalCharCount : NotMatch);
                }
                totalCharCount += currentCharCount;
                count++;
                if (count >= _maxOccur)
                {
                    return(totalCharCount);
                }
                if (content.Length == totalCharCount)
                {
                    return(count >= _minOccur ? totalCharCount : NotMatch);
                }
            }
        }
Exemplo n.º 18
0
        public override int Match(MatchContent content)
        {
            var g = content.GetGroup(_groupName);

            if (g == null)
            {
                return(NotMatch);
            }
            var text = g.Value.GetValue();

            if (content.Length < text.Length)
            {
                return(NotMatch);
            }
            if (content.Direction == MatchDirection.Forward)
            {
                for (int i = 0; i < text.Length; i++)
                {
                    if (content[i] != text[i])
                    {
                        return(NotMatch);
                    }
                }
            }
            else
            {
                for (int i = 0; i < text.Length; i++)
                {
                    if (content[i] != text[text.Length - 1 - i])
                    {
                        return(NotMatch);
                    }
                }
            }
            return(text.Length);
        }
Exemplo n.º 19
0
 public override int Match(MatchContent content)
 {
     return(content.EndOfString() ? NotMatch : 1);
 }
 public override int Match(MatchContent content)
 {
     return(_inner.Match(content.Reverse()));
 }