mirror of
https://github.com/harttle/liquidjs.git
synced 2026-09-15 04:10:40 -07:00
fix: respect cache render options
This commit is contained in:
committed by
Jun Yang
parent
3cf8072df5
commit
a93f11d25a
@@ -89,11 +89,13 @@ export function normalize (options?: LiquidOptions): NormalizedOptions {
|
|||||||
if (options.hasOwnProperty('root')) {
|
if (options.hasOwnProperty('root')) {
|
||||||
options.root = normalizeStringArray(options.root)
|
options.root = normalizeStringArray(options.root)
|
||||||
}
|
}
|
||||||
|
if (options.hasOwnProperty('cache')) {
|
||||||
let cache: Cache<Template[]> | undefined
|
let cache: Cache<Template[]> | undefined
|
||||||
if (typeof options.cache === 'number') cache = options.cache > 0 ? new LRU(options.cache) : undefined
|
if (typeof options.cache === 'number') cache = options.cache > 0 ? new LRU(options.cache) : undefined
|
||||||
else if (typeof options.cache === 'object') cache = options.cache
|
else if (typeof options.cache === 'object') cache = options.cache
|
||||||
else cache = options.cache ? new LRU<Template[]>(1024) : undefined
|
else cache = options.cache ? new LRU<Template[]>(1024) : undefined
|
||||||
options.cache = cache
|
options.cache = cache
|
||||||
|
}
|
||||||
return options as NormalizedOptions
|
return options as NormalizedOptions
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -75,7 +75,7 @@ export class Liquid {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (const filepath of paths) {
|
for (const filepath of paths) {
|
||||||
const { cache } = this.options
|
const { cache } = options
|
||||||
if (cache) {
|
if (cache) {
|
||||||
const tpls = yield cache.read(filepath)
|
const tpls = yield cache.read(filepath)
|
||||||
if (tpls) return tpls
|
if (tpls) return tpls
|
||||||
|
|||||||
@@ -132,6 +132,34 @@ describe('LiquidOptions#cache', function () {
|
|||||||
const y = await engine.renderFile('foo')
|
const y = await engine.renderFile('foo')
|
||||||
expect(y).to.equal('foo')
|
expect(y).to.equal('foo')
|
||||||
})
|
})
|
||||||
|
it('should respect passed in cache=false option', async function () {
|
||||||
|
const engine = new Liquid({
|
||||||
|
root: '/root/',
|
||||||
|
extname: '.html',
|
||||||
|
cache: true
|
||||||
|
})
|
||||||
|
mock({ '/root/files/foo.html': 'foo' })
|
||||||
|
const x = await engine.renderFile('files/foo')
|
||||||
|
expect(x).to.equal('foo')
|
||||||
|
mock({ '/root/files/foo.html': 'bar' })
|
||||||
|
const y = await engine.renderFile('files/foo')
|
||||||
|
expect(y).to.equal('foo')
|
||||||
|
const z = await engine.renderFile('files/foo', undefined, { cache: false })
|
||||||
|
expect(z).to.equal('bar')
|
||||||
|
})
|
||||||
|
it('should use cache when passing in other options', async function () {
|
||||||
|
const engine = new Liquid({
|
||||||
|
root: '/root/',
|
||||||
|
extname: '.html',
|
||||||
|
cache: true
|
||||||
|
})
|
||||||
|
mock({ '/root/files/foo.html': 'foo' })
|
||||||
|
const x = await engine.renderFile('files/foo')
|
||||||
|
expect(x).to.equal('foo')
|
||||||
|
mock({ '/root/files/foo.html': 'bar' })
|
||||||
|
const y = await engine.renderFile('files/foo', undefined, { greedy: true })
|
||||||
|
expect(y).to.equal('foo')
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
describe('#renderFileSync', function () {
|
describe('#renderFileSync', function () {
|
||||||
@@ -174,5 +202,33 @@ describe('LiquidOptions#cache', function () {
|
|||||||
const y = await engine.renderFile('foo')
|
const y = await engine.renderFile('foo')
|
||||||
expect(y).to.equal('foo')
|
expect(y).to.equal('foo')
|
||||||
})
|
})
|
||||||
|
it('should respect passed in cache=false option', async function () {
|
||||||
|
const engine = new Liquid({
|
||||||
|
root: '/root/',
|
||||||
|
extname: '.html',
|
||||||
|
cache: true
|
||||||
|
})
|
||||||
|
mock({ '/root/files/foo.html': 'foo' })
|
||||||
|
const x = engine.renderFileSync('files/foo')
|
||||||
|
expect(x).to.equal('foo')
|
||||||
|
mock({ '/root/files/foo.html': 'bar' })
|
||||||
|
const y = engine.renderFileSync('files/foo')
|
||||||
|
expect(y).to.equal('foo')
|
||||||
|
const z = engine.renderFileSync('files/foo', undefined, { cache: false })
|
||||||
|
expect(z).to.equal('bar')
|
||||||
|
})
|
||||||
|
it('should use cache when passing in other options', async function () {
|
||||||
|
const engine = new Liquid({
|
||||||
|
root: '/root/',
|
||||||
|
extname: '.html',
|
||||||
|
cache: true
|
||||||
|
})
|
||||||
|
mock({ '/root/files/foo.html': 'foo' })
|
||||||
|
const x = engine.renderFileSync('files/foo')
|
||||||
|
expect(x).to.equal('foo')
|
||||||
|
mock({ '/root/files/foo.html': 'bar' })
|
||||||
|
const y = engine.renderFileSync('files/foo', undefined, { greedy: true })
|
||||||
|
expect(y).to.equal('foo')
|
||||||
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user