diff --git a/src/parser/token-kind.ts b/src/parser/token-kind.ts index a66a5330f..afa1f7ab3 100644 --- a/src/parser/token-kind.ts +++ b/src/parser/token-kind.ts @@ -1,14 +1,15 @@ export enum TokenKind { - Number, - Literal, - Tag, - Output, - HTML, - Filter, - Hash, - PropertyAccess, - Word, - Range, - Quoted, - Operator + Number = 1, + Literal = 2, + Tag = 4, + Output = 8, + HTML = 16, + Filter = 32, + Hash = 64, + PropertyAccess = 128, + Word = 256, + Range = 512, + Quoted = 1024, + Operator = 2048, + Delimited = Tag | Output } diff --git a/src/parser/whitespace-ctrl.ts b/src/parser/whitespace-ctrl.ts index 475314cd0..f54fbcf04 100644 --- a/src/parser/whitespace-ctrl.ts +++ b/src/parser/whitespace-ctrl.ts @@ -1,6 +1,5 @@ import { Token } from '../tokens/token' -import { DelimitedToken } from '../tokens/delimited-token' -import { isTagToken, isHTMLToken } from '../util/type-guards' +import { isTagToken, isHTMLToken, isDelimitedToken } from '../util/type-guards' import { NormalizedFullOptions } from '../liquid-options' import { TYPES, INLINE_BLANK, BLANK } from '../util/character' @@ -10,7 +9,7 @@ export function whiteSpaceCtrl (tokens: Token[], options: NormalizedFullOptions) for (let i = 0; i < tokens.length; i++) { const token = tokens[i] - if (!(token instanceof DelimitedToken)) continue + if (!isDelimitedToken(token)) continue if (!inRaw && token.trimLeft) { trimLeft(tokens[i - 1], options.greedy) } diff --git a/src/util/type-guards.ts b/src/util/type-guards.ts index 095a5e9c0..fb8656113 100644 --- a/src/util/type-guards.ts +++ b/src/util/type-guards.ts @@ -1,4 +1,5 @@ import { OperatorToken } from '../tokens/operator-token' +import { DelimitedToken } from '../tokens/delimited-token' import { WordToken } from '../tokens/word-token' import { TagToken } from '../tokens/tag-token' import { HTMLToken } from '../tokens/html-token' @@ -10,6 +11,10 @@ import { NumberToken } from '../tokens/number-token' import { RangeToken } from '../tokens/range-token' import { TokenKind } from '../parser/token-kind' +export function isDelimitedToken (val: any): val is DelimitedToken { + return !!(getKind(val) & TokenKind.Delimited) +} + export function isOperatorToken (val: any): val is OperatorToken { return getKind(val) === TokenKind.Operator }