diff --git a/src/builtin/tags/unless.ts b/src/builtin/tags/unless.ts index 670ec4cddc..8219d61d4f 100644 --- a/src/builtin/tags/unless.ts +++ b/src/builtin/tags/unless.ts @@ -31,8 +31,8 @@ export default { render: async function (ctx: Context, hash: Hash, emitter: Emitter) { const r = this.liquid.renderer const cond = await new Expression(this.cond).value(ctx) - await isFalsy(cond) + await (isFalsy(cond) ? r.renderTemplates(this.templates, ctx, emitter) - : r.renderTemplates(this.elseTemplates, ctx, emitter) + : r.renderTemplates(this.elseTemplates, ctx, emitter)) } } as ITagImplOptions diff --git a/test/integration/builtin/tags/unless.ts b/test/integration/builtin/tags/unless.ts index ca0b1a5d17..823411ef34 100644 --- a/test/integration/builtin/tags/unless.ts +++ b/test/integration/builtin/tags/unless.ts @@ -34,6 +34,19 @@ describe('tags/unless', function () { const html = await liquid.parseAndRender(src) return expect(html).to.equal('') }) + + it('should output unless contents in order', async function () { + const src = ` + Before {{ location }} + {% unless false %}Inside {{ location }}{% endunless %} + After {{ location }}` + const html = await liquid.parseAndRender(src, { location: 'wonderland' }) + expect(html).to.equal(` + Before wonderland + Inside wonderland + After wonderland`) + }) + describe('sync support', function () { it('should render else when predicate yields true', function () { const src = '{% unless 0 %}yes{%else%}no{%endunless%}'