Skip to content

Commit 59f30fa

Browse files
committed
style: update code style and types
1 parent 9bbfa3c commit 59f30fa

14 files changed

+37
-23
lines changed

src/parser/index.ts

-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
export * from './tokenizer'
22
export * from './parser'
33
export * from './parse-stream'
4-
export * from './parse-string-literal'
54
export * from './token-kind'

src/parser/tokenizer.spec.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -21,19 +21,19 @@ describe('Tokenizer', function () {
2121
const token: NumberToken = new Tokenizer('123').readValueOrThrow() as any
2222
expect(token).toBeInstanceOf(NumberToken)
2323
expect(token.getText()).toBe('123')
24-
expect(token.number).toBe(123)
24+
expect(token.value).toBe(123)
2525
})
2626
it('should read negative number', () => {
2727
const token: NumberToken = new Tokenizer('-123').readValueOrThrow() as any
2828
expect(token).toBeInstanceOf(NumberToken)
2929
expect(token.getText()).toBe('-123')
30-
expect(token.number).toBe(-123)
30+
expect(token.value).toBe(-123)
3131
})
3232
it('should read float number', () => {
3333
const token: NumberToken = new Tokenizer('1.23').readValueOrThrow() as any
3434
expect(token).toBeInstanceOf(NumberToken)
3535
expect(token.getText()).toBe('1.23')
36-
expect(token.number).toBe(1.23)
36+
expect(token.value).toBe(1.23)
3737
})
3838
it('should treat 1.2.3 as property read', () => {
3939
const token: PropertyAccessToken = new Tokenizer('1.2.3').readValueOrThrow() as any

src/parser/tokenizer.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { FilteredValueToken, TagToken, HTMLToken, HashToken, QuotedToken, LiquidTagToken, OutputToken, ValueToken, Token, RangeToken, FilterToken, TopLevelToken, PropertyAccessToken, OperatorToken, LiteralToken, IdentifierToken, NumberToken } from '../tokens'
22
import { OperatorHandler } from '../render/operator'
3-
import { TrieNode, isQuotedToken, isWordToken, Trie, createTrie, ellipsis, literalValues, TokenizationError, TYPES, QUOTE, BLANK, IDENTIFIER, NUMBER, SIGN } from '../util'
3+
import { TrieNode, LiteralValue, Trie, createTrie, ellipsis, literalValues, TokenizationError, TYPES, QUOTE, BLANK, IDENTIFIER, NUMBER, SIGN } from '../util'
44
import { Operators, Expression } from '../render'
55
import { NormalizedFullOptions, defaultOptions } from '../liquid-options'
66
import { FilterArg } from './filter-arg'
@@ -11,7 +11,7 @@ export class Tokenizer {
1111
N: number
1212
private rawBeginAt = -1
1313
private opTrie: Trie<OperatorHandler>
14-
private literalTrie: Trie<typeof literalValues[keyof typeof literalValues]>
14+
private literalTrie: Trie<LiteralValue>
1515

1616
constructor (
1717
public input: string,
@@ -306,7 +306,7 @@ export class Tokenizer {
306306
this.skipBlank()
307307
const begin = this.p
308308
const variable = this.readLiteral() || this.readQuoted() || this.readRange() || this.readNumber()
309-
const props: (QuotedToken | IdentifierToken)[] = []
309+
const props: (ValueToken | IdentifierToken)[] = []
310310
while (true) {
311311
if (this.peek() === '[') {
312312
this.p++

src/render/expression.spec.ts

+5-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import { Tokenizer } from '../parser'
22
import { Drop } from '../drop'
3+
import { QuotedToken } from '../tokens'
34
import { Context } from '../context'
45
import { toPromise, toValueSync } from '../util'
6+
import { evalQuotedToken } from './expression'
57

68
describe('Expression', function () {
79
const ctx = new Context({})
@@ -32,7 +34,9 @@ describe('Expression', function () {
3234
expect(await toPromise(create('"foo"').evaluate(ctx, false))).toBe('foo')
3335
expect(await toPromise(create('false').evaluate(ctx, false))).toBe(false)
3436
})
35-
37+
it('should support evalQuotedToken()', async function () {
38+
expect(evalQuotedToken(new QuotedToken('"foo"', 0, 5))).toBe('foo')
39+
})
3640
it('should eval property access', async function () {
3741
const ctx = new Context({
3842
foo: { bar: 'BAR' },

src/render/expression.ts

+7-8
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
import { RangeToken, OperatorToken, Token, LiteralToken, NumberToken, PropertyAccessToken, QuotedToken, OperatorType, operatorTypes } from '../tokens'
1+
import { QuotedToken, RangeToken, OperatorToken, Token, LiteralToken, PropertyAccessToken, OperatorType, operatorTypes } from '../tokens'
22
import { isQuotedToken, isWordToken, isNumberToken, isLiteralToken, isRangeToken, isPropertyAccessToken, UndefinedVariableError, range, isOperatorToken, literalValues, assert } from '../util'
3-
import { parseStringLiteral } from '../parser'
43
import type { Context } from '../context'
54
import type { UnaryOperatorHandler } from '../render'
65

@@ -39,9 +38,9 @@ export function * evalToken (token: Token | undefined, ctx: Context, lenient = f
3938
if (isPropertyAccessToken(token)) return yield evalPropertyAccessToken(token, ctx, lenient)
4039
if (isRangeToken(token)) return yield evalRangeToken(token, ctx)
4140
if (isLiteralToken(token)) return evalLiteralToken(token)
42-
if (isNumberToken(token)) return token.number
41+
if (isNumberToken(token)) return token.value
42+
if (isQuotedToken(token)) return token.value
4343
if (isWordToken(token)) return token.content
44-
if (isQuotedToken(token)) return evalQuotedToken(token)
4544
}
4645

4746
function * evalPropertyAccessToken (token: PropertyAccessToken, ctx: Context, lenient: boolean): IterableIterator<unknown> {
@@ -62,14 +61,14 @@ function * evalPropertyAccessToken (token: PropertyAccessToken, ctx: Context, le
6261
}
6362
}
6463

65-
export function evalQuotedToken (token: QuotedToken) {
66-
return parseStringLiteral(token.getText())
67-
}
68-
6964
function evalLiteralToken (token: LiteralToken) {
7065
return literalValues[token.literal]
7166
}
7267

68+
export function evalQuotedToken (token: QuotedToken) {
69+
return token.value
70+
}
71+
7372
function * evalRangeToken (token: RangeToken, ctx: Context) {
7473
const low: number = yield evalToken(token.lhs, ctx)
7574
const high: number = yield evalToken(token.rhs, ctx)

src/parser/parse-string-literal.spec.ts renamed to src/render/string.spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { parseStringLiteral } from './parse-string-literal'
1+
import { parseStringLiteral } from './string'
22

33
describe('parseStringLiteral()', function () {
44
it('should parse octal escape', () => {
File renamed without changes.

src/template/filter.spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Context } from '../context'
22
import { toPromise } from '../util'
3-
import { IdentifierToken, NumberToken, QuotedToken } from '../tokens'
3+
import { NumberToken, QuotedToken } from '../tokens'
44
import { Filter } from './filter'
55

66
describe('filter', function () {

src/tokens/literal-token.ts

+3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import { Token } from './token'
22
import { TokenKind } from '../parser'
3+
import { literalValues, LiteralValue } from '../util'
34

45
export class LiteralToken extends Token {
6+
public value: LiteralValue
57
public literal: string
68
public constructor (
79
public input: string,
@@ -11,5 +13,6 @@ export class LiteralToken extends Token {
1113
) {
1214
super(TokenKind.Literal, input, begin, end, file)
1315
this.literal = this.getText()
16+
this.value = literalValues[this.literal]
1417
}
1518
}

src/tokens/number-token.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@ import { Token } from './token'
22
import { TokenKind } from '../parser'
33

44
export class NumberToken extends Token {
5-
public number: number
5+
public value: number
66
constructor (
77
public input: string,
88
public begin: number,
99
public end: number,
1010
public file?: string
1111
) {
1212
super(TokenKind.Number, input, begin, end, file)
13-
this.number = Number(this.getText())
13+
this.value = Number(this.getText())
1414
}
1515
}

src/tokens/property-access-token.ts

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
import { Token } from './token'
22
import { LiteralToken } from './literal-token'
33
import { ValueToken } from './value-token'
4+
import { IdentifierToken } from './identifier-token'
5+
import { NumberToken } from './number-token'
46
import { RangeToken } from './range-token'
57
import { QuotedToken } from './quoted-token'
68
import { TokenKind } from '../parser'
79

810
export class PropertyAccessToken extends Token {
911
constructor (
10-
public variable: QuotedToken | RangeToken | LiteralToken | undefined,
11-
public props: ValueToken[],
12+
public variable: QuotedToken | RangeToken | LiteralToken | NumberToken | undefined,
13+
public props: (ValueToken | IdentifierToken)[],
1214
input: string,
1315
begin: number,
1416
end: number,

src/tokens/quoted-token.ts

+3
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
import { Token } from './token'
22
import { TokenKind } from '../parser'
3+
import { parseStringLiteral } from '../render/string'
34

45
export class QuotedToken extends Token {
6+
public readonly value: string
57
constructor (
68
public input: string,
79
public begin: number,
810
public end: number,
911
public file?: string
1012
) {
1113
super(TokenKind.Quoted, input, begin, end, file)
14+
this.value = parseStringLiteral(this.getText())
1215
}
1316
}

src/tokens/value-token.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { RangeToken } from './range-token'
22
import { LiteralToken } from './literal-token'
3+
import { NumberToken } from './number-token'
34
import { QuotedToken } from './quoted-token'
45
import { PropertyAccessToken } from './property-access-token'
56

6-
export type ValueToken = RangeToken | LiteralToken | QuotedToken | PropertyAccessToken
7+
export type ValueToken = RangeToken | LiteralToken | QuotedToken | PropertyAccessToken | NumberToken

src/util/literal.ts

+3
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,6 @@ export const literalValues = {
99
'empty': new EmptyDrop(),
1010
'blank': new BlankDrop()
1111
}
12+
13+
export type LiteralKey = keyof typeof literalValues
14+
export type LiteralValue = typeof literalValues[LiteralKey]

0 commit comments

Comments
 (0)