mirror of
https://github.com/harttle/liquidjs.git
synced 2026-09-19 14:30:38 -07:00
refactor: Tag class support in registerTag()
This commit is contained in:
+12
-6
@@ -1,8 +1,9 @@
|
||||
import { Expression } from '../render/expression'
|
||||
import { Tokenizer } from '../parser/tokenizer'
|
||||
import { Filter } from './filter/filter'
|
||||
import { Context } from '../context/context'
|
||||
import { Liquid } from '../liquid'
|
||||
import { Filter } from './filter'
|
||||
import { Expression } from '../render'
|
||||
import { Tokenizer } from '../parser'
|
||||
import { assert } from '../util'
|
||||
import type { Liquid } from '../liquid'
|
||||
import type { Context } from '../context'
|
||||
|
||||
export class Value {
|
||||
public readonly filters: Filter[] = []
|
||||
@@ -14,7 +15,7 @@ export class Value {
|
||||
public constructor (str: string, liquid: Liquid) {
|
||||
const tokenizer = new Tokenizer(str, liquid.options.operators)
|
||||
this.initial = tokenizer.readExpression()
|
||||
this.filters = tokenizer.readFilters().map(({ name, args }) => new Filter(name, liquid.filters.get(name), args, liquid))
|
||||
this.filters = tokenizer.readFilters().map(({ name, args }) => new Filter(name, this.getFilter(liquid, name), args, liquid))
|
||||
}
|
||||
public * value (ctx: Context, lenient: boolean): Generator<unknown, unknown, unknown> {
|
||||
lenient = lenient || (ctx.opts.lenientIf && this.filters.length > 0 && this.filters[0].name === 'default')
|
||||
@@ -25,4 +26,9 @@ export class Value {
|
||||
}
|
||||
return val
|
||||
}
|
||||
private getFilter (liquid: Liquid, name: string) {
|
||||
const impl = liquid.filters[name]
|
||||
assert(impl || !liquid.options.strictFilters, () => `undefined filter: ${name}`)
|
||||
return impl
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user