12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- package strmatcher
- import (
- "regexp"
- "strings"
- )
- type fullMatcher string
- func (m fullMatcher) Match(s string) bool {
- return string(m) == s
- }
- func (m fullMatcher) String() string {
- return "full:" + string(m)
- }
- type substrMatcher string
- func (m substrMatcher) Match(s string) bool {
- return strings.Contains(s, string(m))
- }
- func (m substrMatcher) String() string {
- return "keyword:" + string(m)
- }
- type domainMatcher string
- func (m domainMatcher) Match(s string) bool {
- pattern := string(m)
- if !strings.HasSuffix(s, pattern) {
- return false
- }
- return len(s) == len(pattern) || s[len(s)-len(pattern)-1] == '.'
- }
- func (m domainMatcher) String() string {
- return "domain:" + string(m)
- }
- type regexMatcher struct {
- pattern *regexp.Regexp
- }
- func (m *regexMatcher) Match(s string) bool {
- return m.pattern.MatchString(s)
- }
- func (m *regexMatcher) String() string {
- return "regexp:" + m.pattern.String()
- }
|