summaryrefslogtreecommitdiff
path: root/internal/regex
diff options
context:
space:
mode:
authorPaul Buetow <pbuetow@mimecast.com>2021-10-15 12:38:39 +0300
committerPaul Buetow <pbuetow@mimecast.com>2021-10-15 12:38:39 +0300
commit55ba72efa4e5d2363f8e0c2cf729c596e760e1c3 (patch)
tree72618e384626d9fc368994e3f24be9e9892d0610 /internal/regex
parentdccbee7dc355438d87baff45e054848e508b004d (diff)
parentd3549a3316a9917520ab5e6b0cd7b1846c59ad4b (diff)
merge from github.com/snonux/dtail
Diffstat (limited to 'internal/regex')
-rw-r--r--internal/regex/regex.go20
-rw-r--r--internal/regex/regex_test.go33
2 files changed, 27 insertions, 26 deletions
diff --git a/internal/regex/regex.go b/internal/regex/regex.go
index 2561659..eb6e1b3 100644
--- a/internal/regex/regex.go
+++ b/internal/regex/regex.go
@@ -4,8 +4,6 @@ import (
"fmt"
"regexp"
"strings"
-
- "github.com/mimecast/dtail/internal/io/logger"
)
// Regex for filtering lines.
@@ -50,9 +48,7 @@ func new(regexStr string, flags []Flag) (Regex, error) {
regexStr: regexStr,
flags: flags,
}
-
re, err := regexp.Compile(regexStr)
-
if err != nil {
return r, err
}
@@ -91,17 +87,15 @@ func (r Regex) MatchString(str string) bool {
}
// Serialize the regex.
-func (r Regex) Serialize() string {
+func (r Regex) Serialize() (string, error) {
var flags []string
for _, flag := range r.flags {
flags = append(flags, flag.String())
}
-
if !r.initialized {
- logger.FatalExit("Unable to serialize regex as not initialized properly", r)
+ return "", fmt.Errorf("Unable to serialize regex as not initialized properly: %v", r)
}
-
- return fmt.Sprintf("regex:%s %s", strings.Join(flags, ","), r.regexStr)
+ return fmt.Sprintf("regex:%s %s", strings.Join(flags, ","), r.regexStr), nil
}
// Deserialize the regex.
@@ -109,15 +103,14 @@ func Deserialize(str string) (Regex, error) {
// Get regex string
s := strings.SplitN(str, " ", 2)
if len(s) < 2 {
- logger.Debug("Using noop regex", str)
return NewNoop(), nil
}
-
flagsStr := s[0]
regexStr := s[1]
if !strings.HasPrefix(flagsStr, "regex") {
- return Regex{}, fmt.Errorf("unable to deserialize regex '%s': should start with string 'regex'", str)
+ return Regex{}, fmt.Errorf("unable to deserialize regex '%s': should start "+
+ "with string 'regex'", str)
}
// Parse regex flags, e.g. "regex:flag1,flag2,flag3..."
@@ -127,13 +120,10 @@ func Deserialize(str string) (Regex, error) {
for _, flagStr := range strings.Split(s[1], ",") {
flag, err := NewFlag(flagStr)
if err != nil {
- logger.Error("ignoring flag", err)
continue
}
- logger.Debug("Adding regex flag", flag)
flags = append(flags, flag)
}
}
-
return new(regexStr, flags)
}
diff --git a/internal/regex/regex_test.go b/internal/regex/regex_test.go
index a5e7faf..033a286 100644
--- a/internal/regex/regex_test.go
+++ b/internal/regex/regex_test.go
@@ -9,7 +9,8 @@ func TestRegex(t *testing.T) {
r := NewNoop()
if !r.MatchString(input) {
- t.Errorf("expected to match string '%s' with noop regex '%v' but didn't\n", input, r)
+ t.Errorf("expected to match string '%s' with noop regex '%v' but didn't\n",
+ input, r)
}
r, err := New(".hello", Default)
@@ -17,16 +18,21 @@ func TestRegex(t *testing.T) {
t.Errorf("unable to create regex: %v\n", err)
}
if r.MatchString(input) {
- t.Errorf("expected to match string '%s' with regex '%v' but didn't\n", input, r)
+ t.Errorf("expected to match string '%s' with regex '%v' but didn't\n",
+ input, r)
}
- r2, err := Deserialize(r.Serialize())
+ serialized, err := r.Serialize()
if err != nil {
- t.Errorf("unable to serialize deserialized regex: %v: %v\n", r.Serialize(), err)
+ t.Errorf("unable to serialize regex: %v: %v\n", serialized, err)
+ }
+ r2, err := Deserialize(serialized)
+ if err != nil {
+ t.Errorf("unable to serialize deserialized regex: %v: %v\n", serialized, err)
}
if r.String() != r2.String() {
- t.Errorf("regex should be the same after deserialize(serialize(..)), got '%s' but expected '%s'.\n",
- r2.String(), r.String())
+ t.Errorf("regex should be the same after deserialize(serialize(..)), got "+
+ "'%s' but expected '%s'.\n", r2.String(), r.String())
}
r, err = New(".hello", Invert)
@@ -34,15 +40,20 @@ func TestRegex(t *testing.T) {
t.Errorf("unable to create regex: %v\n", err)
}
if !r.MatchString(input) {
- t.Errorf("expected to not match string '%s' with regex '%v' but matched\n", input, r)
+ t.Errorf("expected to not match string '%s' with regex '%v' but matched\n",
+ input, r)
}
- r2, err = Deserialize(r.Serialize())
+ serialized, err = r.Serialize()
+ if err != nil {
+ t.Errorf("unable to serialize regex: %v: %v\n", serialized, err)
+ }
+ r2, err = Deserialize(serialized)
if err != nil {
- t.Errorf("unable to serialize deserialized regex: %v: %v\n", r.Serialize(), err)
+ t.Errorf("unable to serialize deserialized regex: %v: %v\n", serialized, err)
}
if r.String() != r2.String() {
- t.Errorf("regex should be the same after deserialize(serialize(..)), got '%s' but expected '%s'.\n",
- r2.String(), r.String())
+ t.Errorf("regex should be the same after deserialize(serialize(..)), got "+
+ "'%s' but expected '%s'.\n", r2.String(), r.String())
}
}