diff options
Diffstat (limited to 'js')
-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}'], |