diff --git a/src/tags/case.ts b/src/tags/case.ts index de0d2d651..d8bff9e5a 100644 --- a/src/tags/case.ts +++ b/src/tags/case.ts @@ -1,4 +1,5 @@ import { ValueToken, Liquid, toValue, evalToken, Value, Emitter, TagToken, TopLevelToken, Context, Template, Tag, ParseStream } from '..' +import { equals } from '../render' export default class extends Tag { value: Value @@ -58,7 +59,7 @@ export default class extends Tag { for (const branch of this.branches) { for (const valueToken of branch.values) { const value = yield evalToken(valueToken, ctx, ctx.opts.lenientIf) - if (target === value) { + if (equals(target, value)) { yield r.renderTemplates(branch.templates, ctx, emitter) branchHit = true break diff --git a/test/integration/tags/case.spec.ts b/test/integration/tags/case.spec.ts index ce0d8f86f..c5de34bbc 100644 --- a/test/integration/tags/case.spec.ts +++ b/test/integration/tags/case.spec.ts @@ -119,4 +119,17 @@ describe('tags/case', function () { '{%- endcase %}', {}) expect(result).toEqual('show this') }) + it('should apply value equal for arrays', () => { + const engine = new Liquid() + const result = engine.parseAndRenderSync(` + {%- assign x = "a,b,c" | split: "," %} + {%- assign y = "a,b,c" | split: "," %} + {% case x %}{% when y %}TRUE{% else %}FALSE{% endcase %} + {% if x == y %}TRUE{% else %}FALSE{% endif %} + `) + expect(result).toEqual(` + TRUE + TRUE + `) + }) })