diff --git a/src/tokens/tag-token.ts b/src/tokens/tag-token.ts index cb7598074..e42268e75 100644 --- a/src/tokens/tag-token.ts +++ b/src/tokens/tag-token.ts @@ -5,6 +5,7 @@ import type { NormalizedFullOptions } from '../liquid-options' export class TagToken extends DelimitedToken { public name: string public tokenizer: Tokenizer + public readonly args: string; public constructor ( input: string, begin: number, @@ -20,9 +21,6 @@ export class TagToken extends DelimitedToken { this.name = this.tokenizer.readTagName() this.tokenizer.assert(this.name, `illegal tag syntax, tag name expected`) this.tokenizer.skipBlank() - } - - get args (): string { - return this.tokenizer.input.slice(this.tokenizer.p, this.contentRange[1]) + this.args = this.tokenizer.input.slice(this.tokenizer.p, this.contentRange[1]) } } diff --git a/test/e2e/issues.spec.ts b/test/e2e/issues.spec.ts index 619241f10..65ed98536 100644 --- a/test/e2e/issues.spec.ts +++ b/test/e2e/issues.spec.ts @@ -1,4 +1,4 @@ -import { TopLevelToken, TagToken, Tokenizer, Context, Liquid, Drop, toValueSync, LiquidError } from '../..' +import { TopLevelToken, TagToken, Tokenizer, Context, Liquid, Drop, toValueSync, LiquidError, IfTag } from '../..' const LiquidUMD = require('../../dist/liquid.browser.umd.js').Liquid describe('Issues', function () { @@ -558,4 +558,11 @@ describe('Issues', function () { CSharp 2 Posts:page2,page4, CPP 1 Posts:page0,`) }) + it('if tag condition, the token args is empty #796', () => { + const tpl = 'Hello, {% if name %} {{ name }} {% else %} user {% endif %}' + const engine = new Liquid() + const parsed = engine.parse(tpl) + const ifToken = parsed[1] + expect((ifToken as IfTag).token.args).toEqual('name') + }) })