42 lines
763 B
Go
42 lines
763 B
Go
package rule
|
|
|
|
import (
|
|
"regexp"
|
|
)
|
|
|
|
var _ RuleClass[string] = (*RuleMessageRegex)(nil)
|
|
|
|
type RuleMessageRegex struct {
|
|
storInfo
|
|
regex *regexp.Regexp
|
|
}
|
|
|
|
func (r RuleMessageRegex) Type() RuleType {
|
|
return MessageRegex
|
|
}
|
|
|
|
func (r RuleMessageRegex) Match(input string) (bool, error) {
|
|
return r.regex.MatchString(input), nil
|
|
}
|
|
|
|
func (r RuleMessageRegex) StorageName() string {
|
|
return r.storName
|
|
}
|
|
func (r RuleMessageRegex) StoragePath() string {
|
|
return r.storPath
|
|
}
|
|
|
|
func NewRuleMessageRegex(storName, storPath, regexStr string) (*RuleMessageRegex, error) {
|
|
regex, err := regexp.Compile(regexStr)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &RuleMessageRegex{
|
|
storInfo: storInfo{
|
|
storName: storName,
|
|
storPath: storPath,
|
|
},
|
|
regex: regex,
|
|
}, nil
|
|
}
|