diff --git a/spec/suites/core/UtilSpec.js b/spec/suites/core/UtilSpec.js index f4b0b534..3e7d3ec0 100644 --- a/spec/suites/core/UtilSpec.js +++ b/spec/suites/core/UtilSpec.js @@ -188,48 +188,15 @@ describe('Util', function () { describe('#template', function () { it('evaluates templates with a given data object', function () { - var tpl = 'Hello {foo} and {baz }!'; + var tpl = 'Hello {foo} and {bar}!'; var str = L.Util.template(tpl, { foo: 'Vlad', - bar: 'Dave', - baz: function (o) { - return o.bar; - } + bar: 'Dave' }); expect(str).to.eql('Hello Vlad and Dave!'); }); - - it('check the cache', function () { - var tpl = 'Hello {foo} and {baz }!'; - - var str = L.Util._templateCache[tpl]({ - foo: 'ladies', - baz: function () { - return 'gentlemen'; - } - }); - - expect(str).to.eql('Hello ladies and gentlemen!'); - }); - - it('evaluates templates with a function', function () { - var tpl = L.Util.compileTemplate('Hello { foo } and { bar}!', {}); - - var str1 = tpl({ - foo: 'Vlad', - bar: 'Dave' - }); - var str2 = tpl({ - foo: '{Calvin}', - bar: '{Simon}' - }); - - expect(str1).to.eql('Hello Vlad and Dave!'); - expect(str2).to.eql('Hello {Calvin} and {Simon}!'); - }); - it('does not modify text without a token variable', function () { expect(L.Util.template('foo', {})).to.eql('foo'); }); diff --git a/src/core/Util.js b/src/core/Util.js index 5e67b17b..b9030989 100644 --- a/src/core/Util.js +++ b/src/core/Util.js @@ -104,21 +104,16 @@ L.Util = { } return ((!existingUrl || existingUrl.indexOf('?') === -1) ? '?' : '&') + params.join('&'); }, - - compileTemplate: function (str, data) { - // based on https://gist.github.com/padolsey/6008842 - str = str.replace(/"/g, '\\\"'); - str = str.replace(/\{ *([\w_]+) *\}/g, function (str, key) { - return '" + o["' + key + '"]' + (typeof data[key] === 'function' ? '(o)' : '') + ' + "'; - }); - // jshint evil: true - return new Function('o', 'return "' + str + '";'); - }, - template: function (str, data) { - var cache = L.Util._templateCache = L.Util._templateCache || {}; - cache[str] = cache[str] || L.Util.compileTemplate(str, data); - return cache[str](data); + return str.replace(/\{ *([\w_]+) *\}/g, function (str, key) { + var value = data[key]; + if (value === undefined) { + throw new Error('No value provided for variable ' + str); + } else if (typeof value === 'function') { + value = value(data); + } + return value; + }); }, isArray: Array.isArray || function (obj) {