github.com/Cloud-Foundations/Dominator@v0.3.4/lib/triggers/match.go (about) 1 package triggers 2 3 func (triggers *Triggers) match(line string) { 4 triggers.compile() 5 if triggers.matchedTriggers == nil { 6 triggers.matchedTriggers = make(map[*Trigger]struct{}) 7 triggers.unmatchedTriggers = make(map[*Trigger]struct{}, 8 len(triggers.Triggers)) 9 for _, trigger := range triggers.Triggers { 10 triggers.unmatchedTriggers[trigger] = struct{}{} 11 } 12 } 13 for trigger := range triggers.unmatchedTriggers { 14 for _, regex := range trigger.matchRegexes { 15 if regex.MatchString(line) { 16 triggers.matchedTriggers[trigger] = struct{}{} 17 delete(triggers.unmatchedTriggers, trigger) 18 break 19 } 20 } 21 } 22 } 23 24 func (triggers *Triggers) getMatchedTriggers() []*Trigger { 25 mTriggers := make([]*Trigger, 0, len(triggers.matchedTriggers)) 26 for trigger := range triggers.matchedTriggers { 27 mTriggers = append(mTriggers, trigger) 28 } 29 triggers.matchedTriggers = nil 30 triggers.unmatchedTriggers = nil 31 return mTriggers 32 } 33 34 func (triggers *Triggers) getMatchStatistics() (nMatched, nUnmatched uint) { 35 if triggers.matchedTriggers == nil { 36 nUnmatched = uint(len(triggers.Triggers)) 37 } else { 38 nUnmatched = uint(len(triggers.unmatchedTriggers)) 39 } 40 return uint(len(triggers.matchedTriggers)), nUnmatched 41 }