diff options
| author | Paul Buetow <pbuetow@mimecast.com> | 2020-09-04 14:42:38 +0300 |
|---|---|---|
| committer | Paul Buetow <pbuetow@mimecast.com> | 2020-09-04 14:42:38 +0300 |
| commit | 4a200606e6186b8457b336d07a7eef01f8929b9e (patch) | |
| tree | eccadaab2b051496a76e2a642766d77e6634b456 /internal/regex | |
| parent | 26ba76807853ec7d98b6190a72f4031f3cd80bed (diff) | |
server side support for new regex package
Diffstat (limited to 'internal/regex')
| -rw-r--r-- | internal/regex/regex.go | 21 | ||||
| -rw-r--r-- | internal/regex/regex_test.go | 2 |
2 files changed, 20 insertions, 3 deletions
diff --git a/internal/regex/regex.go b/internal/regex/regex.go index 800bc31..e870797 100644 --- a/internal/regex/regex.go +++ b/internal/regex/regex.go @@ -27,6 +27,9 @@ func NewNoop() Regex { } func New(regexStr string, flag Flag) (Regex, error) { + if regexStr == "" || regexStr == "." || regexStr == ".*" { + return NewNoop(), nil + } return new(regexStr, []Flag{flag}) } @@ -46,11 +49,24 @@ func new(regexStr string, flags []Flag) (Regex, error) { return r, nil } +func (r Regex) Match(bytes []byte) bool { + switch r.flags[0] { + case Default: + return r.re.Match(bytes) + case Invert: + return !r.re.Match(bytes) + case Noop: + return true + default: + return false + } +} + func (r Regex) MatchString(str string) bool { switch r.flags[0] { case Default: return r.re.MatchString(str) - case Negate: + case Invert: return !r.re.MatchString(str) case Noop: return true @@ -72,7 +88,8 @@ func Deserialize(str string) (Regex, error) { // Get regex string s := strings.SplitN(str, " ", 2) if len(s) < 2 { - return Regex{}, fmt.Errorf("unable to deserialize regex '%s'", str) + logger.Debug("Using noop regex", str) + return NewNoop(), nil } flagsStr := s[0] diff --git a/internal/regex/regex_test.go b/internal/regex/regex_test.go index acdd518..a5e7faf 100644 --- a/internal/regex/regex_test.go +++ b/internal/regex/regex_test.go @@ -29,7 +29,7 @@ func TestRegex(t *testing.T) { r2.String(), r.String()) } - r, err = New(".hello", Negate) + r, err = New(".hello", Invert) if err != nil { t.Errorf("unable to create regex: %v\n", err) } |
