Skip to content

Commit 2a69682

Browse files
Modify _or to return the parsed value instead of the original value
1 parent 40cb81b commit 2a69682

2 files changed

Lines changed: 18 additions & 2 deletions

File tree

issues_test.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -332,3 +332,18 @@ func TestIssue96(t *testing.T) {
332332
expected := `[2, 4, 6]`
333333
assert.JSONEq(t, expected, result.String())
334334
}
335+
336+
func TestIssue98(t *testing.T) {
337+
rule := `{"or": [{"and": [true]}]}`
338+
data := `{}`
339+
340+
var result bytes.Buffer
341+
342+
err := jsonlogic.Apply(strings.NewReader(rule), strings.NewReader(data), &result)
343+
if err != nil {
344+
t.Fatal(err)
345+
}
346+
347+
expected := `true`
348+
assert.JSONEq(t, expected, result.String())
349+
}

jsonlogic.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,9 @@ func _or(values, data any) any {
107107
values = getValuesWithoutParsing(values, data)
108108

109109
for _, value := range values.([]any) {
110-
if isTrue(parseValues(value, data)) {
111-
return value
110+
parsed := parseValues(value, data)
111+
if isTrue(parsed) {
112+
return parsed
112113
}
113114
}
114115

0 commit comments

Comments
 (0)