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