summaryrefslogtreecommitdiff
path: root/internal/regex
diff options
context:
space:
mode:
authorPaul Buetow <pbuetow@mimecast.com>2020-09-04 14:42:38 +0300
committerPaul Buetow <pbuetow@mimecast.com>2020-09-04 14:42:38 +0300
commit4a200606e6186b8457b336d07a7eef01f8929b9e (patch)
treeeccadaab2b051496a76e2a642766d77e6634b456 /internal/regex
parent26ba76807853ec7d98b6190a72f4031f3cd80bed (diff)
server side support for new regex package
Diffstat (limited to 'internal/regex')
-rw-r--r--internal/regex/regex.go21
-rw-r--r--internal/regex/regex_test.go2
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)
}