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  }