2021-10-31 06:01:13 -04:00
|
|
|
package strmatcher
|
|
|
|
|
|
|
|
type matcherEntry struct {
|
|
|
|
matcher Matcher
|
|
|
|
value uint32
|
|
|
|
}
|
|
|
|
|
|
|
|
// SimpleMatcherGroup is an implementation of MatcherGroup.
|
|
|
|
// It simply stores all matchers in an array and sequentially matches them.
|
|
|
|
type SimpleMatcherGroup struct {
|
|
|
|
matchers []matcherEntry
|
|
|
|
}
|
|
|
|
|
|
|
|
// AddMatcher implements MatcherGroupForAll.AddMatcher.
|
|
|
|
func (g *SimpleMatcherGroup) AddMatcher(matcher Matcher, value uint32) {
|
|
|
|
g.matchers = append(g.matchers, matcherEntry{
|
|
|
|
matcher: matcher,
|
|
|
|
value: value,
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
// Match implements MatcherGroup.Match.
|
|
|
|
func (g *SimpleMatcherGroup) Match(input string) []uint32 {
|
|
|
|
result := []uint32{}
|
|
|
|
for _, e := range g.matchers {
|
|
|
|
if e.matcher.Match(input) {
|
|
|
|
result = append(result, e.value)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return result
|
|
|
|
}
|
|
|
|
|
|
|
|
// MatchAny implements MatcherGroup.MatchAny.
|
|
|
|
func (g *SimpleMatcherGroup) MatchAny(input string) bool {
|
2022-09-16 02:40:03 -04:00
|
|
|
for _, e := range g.matchers {
|
|
|
|
if e.matcher.Match(input) {
|
|
|
|
return true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return false
|
2021-10-31 06:01:13 -04:00
|
|
|
}
|