From 81e0e6dddb06afcaebfc1afe601df74dba4da275 Mon Sep 17 00:00:00 2001 From: Jeff Haynie Date: Sat, 20 Jun 2020 20:41:47 -0500 Subject: [PATCH] add string to filter so we can debug --- filterexpr/filterexpr.go | 7 +++++++ filterexpr/filterexpr_test.go | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/filterexpr/filterexpr.go b/filterexpr/filterexpr.go index 37ddd56..79f35ca 100644 --- a/filterexpr/filterexpr.go +++ b/filterexpr/filterexpr.go @@ -10,6 +10,9 @@ import ( type Filter interface { // Test will return true if the filter expression matches the map Test(kv map[string]interface{}) bool + + // String will return a string representation + String() string } type filter struct { @@ -23,6 +26,10 @@ func (f *filter) Test(kv map[string]interface{}) bool { return f.expr.Test(kv) } +func (f *filter) String() string { + return f.expr.String() +} + // Compile will compile the filter expression as a string in Filter which can be saved and invoked and is thread safe func Compile(expr string) (Filter, error) { object, err := ParseReader("", strings.NewReader(expr), MaxExpressions(150000)) diff --git a/filterexpr/filterexpr_test.go b/filterexpr/filterexpr_test.go index 9944a36..896c678 100644 --- a/filterexpr/filterexpr_test.go +++ b/filterexpr/filterexpr_test.go @@ -171,3 +171,10 @@ func TestABigAsExpression(t *testing.T) { assert.NoError(err) assert.True(filter.Test(map[string]interface{}{"model": "activityfeed.Feed", "user_id": "40bfb0d341249a58"})) } + +func TestStringify(t *testing.T) { + assert := assert.New(t) + filter, err := Compile(`user-id:"a"`) + assert.NoError(err) + assert.Equal("ExpressionGroup[[Expression[Node[user-id=a],,]]]", filter.String()) +}