Hunter0x7c7
2022-08-11 b8230139fb40edea387617b6accd8371e37eda58
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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 {
    return len(g.Match(input)) > 0
}