Skip to content

Commit 2b63035

Browse files
Yang Junharttle
Yang Jun
authored andcommitted
fix: case/when array equality, #673
1 parent 8c7cef9 commit 2b63035

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

src/tags/case.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { ValueToken, Liquid, toValue, evalToken, Value, Emitter, TagToken, TopLevelToken, Context, Template, Tag, ParseStream } from '..'
2+
import { equals } from '../render'
23

34
export default class extends Tag {
45
value: Value
@@ -58,7 +59,7 @@ export default class extends Tag {
5859
for (const branch of this.branches) {
5960
for (const valueToken of branch.values) {
6061
const value = yield evalToken(valueToken, ctx, ctx.opts.lenientIf)
61-
if (target === value) {
62+
if (equals(target, value)) {
6263
yield r.renderTemplates(branch.templates, ctx, emitter)
6364
branchHit = true
6465
break

test/integration/tags/case.spec.ts

+13
Original file line numberDiff line numberDiff line change
@@ -119,4 +119,17 @@ describe('tags/case', function () {
119119
'{%- endcase %}', {})
120120
expect(result).toEqual('show this')
121121
})
122+
it('should apply value equal for arrays', () => {
123+
const engine = new Liquid()
124+
const result = engine.parseAndRenderSync(`
125+
{%- assign x = "a,b,c" | split: "," %}
126+
{%- assign y = "a,b,c" | split: "," %}
127+
{% case x %}{% when y %}TRUE{% else %}FALSE{% endcase %}
128+
{% if x == y %}TRUE{% else %}FALSE{% endif %}
129+
`)
130+
expect(result).toEqual(`
131+
TRUE
132+
TRUE
133+
`)
134+
})
122135
})

0 commit comments

Comments
 (0)