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); }
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; }
public override int Match(MatchContent content) { if (content.EndOfString()) { return(NotMatch); } var ch = content.GetCurrentChar(); return(ch >= _start && ch <= _end ? 1 : NotMatch); }
public override int Match(MatchContent content) { var count = content.CountUntil(_ch, _maxOccur); if (count < _minOccur) { return(NotMatch); } return(count); }
public override int Match(MatchContent content) { var count = content.CountWhileInRange(_start, _end, _maxOccur); if (count < _minOccur) { return(NotMatch); } return(count); }
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); }
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)); }
public override int Match(MatchContent content) { foreach (var m in _inner) { if (_isNegative ^ (m.Match(content) == NotMatch)) { return(NotMatch); } } return(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()); } }
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); }
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); }
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); }
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); }
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); }
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); }
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); } } }
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); }
public override int Match(MatchContent content) { return(content.EndOfString() ? NotMatch : 1); }
public override int Match(MatchContent content) { return(_inner.Match(content.Reverse())); }