diff options
author | Paul Duncan <pabs@pablotron.org> | 2018-09-09 03:59:46 -0400 |
---|---|---|
committer | Paul Duncan <pabs@pablotron.org> | 2018-09-09 03:59:46 -0400 |
commit | 7c2a6f215734d29f3be8c0a0c85307e896f48155 (patch) | |
tree | 5e65cafa8c73a4ebb1b4fa6f5a4f048b4ca9752c | |
parent | fd0050d21c132f1c6cc2673ce1cc964d448b70c3 (diff) | |
download | luigi-template-7c2a6f215734d29f3be8c0a0c85307e896f48155.tar.bz2 luigi-template-7c2a6f215734d29f3be8c0a0c85307e896f48155.zip |
js: add cache singleton, support non-array cache templates
-rw-r--r-- | js/luigi-template.js | 8 | ||||
-rw-r--r-- | js/test/cache.js | 25 |
2 files changed, 31 insertions, 2 deletions
diff --git a/js/luigi-template.js b/js/luigi-template.js index d48d668..473938f 100644 --- a/js/luigi-template.js +++ b/js/luigi-template.js @@ -300,8 +300,8 @@ LuigiTemplate = (function() { var s = null; if (key in this.templates) { - // get template from constructor templates - s = this.templates[key].join(''); + s = this.templates[key]; + s = (s.constructor === Array) ? s.join('') : s; } else if (this.try_dom) { // get source from inline script tag s = get_inline_template(key); @@ -317,6 +317,10 @@ LuigiTemplate = (function() { return this.cache[key].run(args); }; + T.cache = function(args) { + return new T.Cache(args); + } + // declare domcache constructor T.DOMCache = function() { this.cache = {}; diff --git a/js/test/cache.js b/js/test/cache.js index 39dd46d..0b68b3d 100644 --- a/js/test/cache.js +++ b/js/test/cache.js @@ -4,6 +4,18 @@ it('cache', function() { var cache = new LuigiTemplate.Cache({ + foo: 'foo%{bar}', + }); + + var r = cache.run('foo', { + bar: 'foo', + }); + + assert.equal(r, 'foofoo'); + }); + + it('cache with array', function() { + var cache = new LuigiTemplate.Cache({ foo: ['foo%{bar}'], }); @@ -14,6 +26,19 @@ assert.equal(r, 'foofoo'); }); + it('cache singleton', function() { + var cache = LuigiTemplate.cache({ + foo: 'foo%{bar}', + }); + + var r = cache.run('foo', { + bar: 'foo', + }); + + assert.equal(r, 'foofoo'); + }); + + it('cache with custom filters', function() { var cache = new LuigiTemplate.Cache({ foo: ['foo%{bar | barify}'], |