Skip to content

Commit edc52cc

Browse files
authored
feat: support filtering out empty values (#50)
1 parent 052cb0a commit edc52cc

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

expr/builtins/builtins_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,8 @@ var builtinTests = []testBuiltins{
275275
{`filter(split("apples,oranges",","),"ora%")`, value.NewStringsValue([]string{"apples"})},
276276
{`filter(split("apples,oranges",","),["ora%","ban*"])`, value.NewStringsValue([]string{"apples"})},
277277
{`filter(split("apples,oranges",","), ["ora*","notmatch","stuff"] )`, value.NewStringsValue([]string{"apples"})},
278+
{`filter(split("apples,oranges,",","), [""] )`, value.NewStringsValue([]string{"apples", "oranges"})},
279+
{`filter("apples","")`, value.NewStringValue("apples")},
278280
{`filter("apples","ban*")`, value.NewStringValue("apples")},
279281
{`filter("apples","ban")`, value.NewStringValue("apples")},
280282
{`filter("apples","app*")`, value.NilValueVal},

expr/builtins/filter.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,11 @@ func FilterEval(ctx expr.EvalContext, vals []value.Value) (value.Value, bool) {
107107
filteredOut = true
108108
break
109109
}
110+
} else if filter == "" {
111+
if rowKey == "" && v != nil {
112+
filteredOut = true
113+
break
114+
}
110115
} else {
111116
if strings.HasPrefix(rowKey, filter) && v != nil {
112117
filteredOut = true
@@ -132,6 +137,11 @@ func FilterEval(ctx expr.EvalContext, vals []value.Value) (value.Value, bool) {
132137
anyMatches = true
133138
break
134139
}
140+
} else if filter == "" {
141+
if val.Val() == "" {
142+
anyMatches = true
143+
break
144+
}
135145
} else {
136146
if strings.HasPrefix(val.Val(), filter) {
137147
anyMatches = true
@@ -157,6 +167,11 @@ func FilterEval(ctx expr.EvalContext, vals []value.Value) (value.Value, bool) {
157167
filteredOut = true
158168
break
159169
}
170+
} else if filter == "" {
171+
if sv == "" {
172+
filteredOut = true
173+
break
174+
}
160175
} else {
161176
if strings.HasPrefix(sv, filter) && sv != "" {
162177
filteredOut = true

0 commit comments

Comments
 (0)