Skip to main content

Abstract Class: Parser

Defined in: src/parser.ts:34

The abstract base class for all Liquid template parsers.

Constructors

Constructor

new Parser(env, source, templateName, tokens): Parser

Defined in: src/parser.ts:39

Parameters

env

Environment

source

string

templateName

string

tokens

Token[]

Returns

Parser

Properties

env

readonly env: Environment

Defined in: src/parser.ts:40


eoi

protected eoi: Token

Defined in: src/parser.ts:35


pos

protected pos: number = 0

Defined in: src/parser.ts:36


source

readonly source: string

Defined in: src/parser.ts:41


templateName

readonly templateName: string

Defined in: src/parser.ts:42


tokens

readonly tokens: Token[]

Defined in: src/parser.ts:43


whitespaceControlCarry

protected whitespaceControlCarry: "-" | undefined = undefined

Defined in: src/parser.ts:37

Methods

carryWhitespaceControl()

carryWhitespaceControl(): void

Defined in: src/parser.ts:68

Returns

void


current()

current(): Token

Defined in: src/parser.ts:81

Return the current token, or EOI if there are no tokens left. Does not increment the token pointer

Returns

Token


currentValue()

currentValue(): string

Defined in: src/parser.ts:88

Return the current token's value. The substring represented by the token.

Returns

string


eat()

eat(kind, message?): Token

Defined in: src/parser.ts:96

Assert and consume a token of kind kind. Raises a syntax error if the current token's kind is not kind.

Parameters

kind

TokenKind

message?

string | undefined

Returns

Token


eatEmptyTag()

eatEmptyTag(name): Token

Defined in: src/parser.ts:111

Parameters

name

string

Returns

Token


eatOneOf()

eatOneOf(kinds): Token

Defined in: src/parser.ts:134

Consume the next token if its kind is in kinds. Raises a syntax error if the current token kind is not in kinds.

Parameters

kinds

Set<TokenKind>

Returns

Token


eatTag()

eatTag(name): Token

Defined in: src/parser.ts:147

Parameters

name

string

Returns

Token


expectExpression()

expectExpression(): void

Defined in: src/parser.ts:174

Throw an error if we're not at the start of an expression.

Returns

void


kind()

kind(): 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67

Defined in: src/parser.ts:188

Return the kind of the current token.

Returns

1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67


next()

next(): Token

Defined in: src/parser.ts:196

Return the current token and increment the token pointer. Returns EOI if there are no tokens left.

Returns

Token


parseArguments()

abstract parseArguments(requireCommas?): (Expression | KeywordArgument)[]

Defined in: src/parser.ts:213

Parse positional and/or keyword arguments.

Assumes any leading commas have been consumed by the caller, if they are allowed.

Parameters

requireCommas?

boolean

When true, throw a syntax error if there is no comma between each argument.

Returns

(Expression | KeywordArgument)[]


parseBlock()

abstract parseBlock(end?): Block

Defined in: src/parser.ts:222

Parse template text and markup until reaching a named tag.

Parameters

end?

Set<string>

Possible tag names that terminate the block.

Returns

Block


parseExpression()

abstract parseExpression(precedence?, infix?): Expression

Defined in: src/parser.ts:230

Parse a literal, variable or compound expression.

Parameters

precedence?

number

The binding power of this sub expression.

infix?

boolean

If true, accept infix operators when parsing the expression.

Returns

Expression


parseFilteredExpression()

abstract parseFilteredExpression(precedence?): Expression

Defined in: src/parser.ts:237

Parse an expression with optional filters.

Parameters

precedence?

number

The binding power of this sub expression.

Returns

Expression


parseIdent()

abstract parseIdent(): Name

Defined in: src/parser.ts:243

Parse an identifier. Raises a syntax error if the identifier is followed by path segments.

Returns

Name


parseKeywordArguments()

abstract parseKeywordArguments(requireCommas?): KeywordArgument[]

Defined in: src/parser.ts:251

Parse zero or more named arguments.

Assumes any leading commas have been consumed by the caller, if they are allowed.

Parameters

requireCommas?

boolean

Returns

KeywordArgument[]


parseLineStatements()

abstract parseLineStatements(): Block

Defined in: src/parser.ts:258

Parse newline terminated markup from the {% liquid %} tag.

Returns

Block


parseName()

abstract parseName(): Name

Defined in: src/parser.ts:265

Parse an identifier, possibly surrounded by quotes.

Raises a syntax error if the identifier is followed by path segments.

Returns

Name


parsePositionalArguments()

abstract parsePositionalArguments(requireCommas?): Expression[]

Defined in: src/parser.ts:276

Parse positional arguments.

Assumes any leading commas have been consumed by the caller, if they are allowed.

Parameters

requireCommas?

boolean

When true, throw a syntax error if there is no comma between each argument.

Returns

Expression[]


parseStringLiteral()

abstract parseStringLiteral(): StringLiteral

Defined in: src/parser.ts:281

Parser a literal string surrounded by single or double quotes.

Returns

StringLiteral


peek()

peek(offset?): Token

Defined in: src/parser.ts:287

Return the token at self.pos + offset, or EOI if there are no tokens left. Does not advance the token pointer.

Parameters

offset?

number = 1

Returns

Token


peekTagName()

peekTagName(): string

Defined in: src/parser.ts:295

Return the name of the current tag, or throw an error if we're not at a tag.

Returns

string


peekWhitespaceControl()

peekWhitespaceControl(): string | undefined

Defined in: src/parser.ts:311

Returns

string | undefined


skipWhitespaceControl()

skipWhitespaceControl(): void

Defined in: src/parser.ts:318

Returns

void


tag()

tag(name): boolean

Defined in: src/parser.ts:327

Return true if we're at the start of a tag named name.

Parameters

name

string

Returns

boolean


tags()

tags(names): string | undefined

Defined in: src/parser.ts:342

Return true if we're at the start of a tag and that tag's name is in names.

Parameters

names

Set<string>

Returns

string | undefined


parse()

static parse<P>(this, env, source, templateName, startIndex?): Block

Defined in: src/parser.ts:48

Type Parameters

P

P extends Parser

Parameters

this

(env, source, templateName, tokens) => P

env

Environment

source

string

templateName

string

startIndex?

number = 0

Returns

Block