From 5acafd33c653846d0e64a0d10e63798bc2535dd5 Mon Sep 17 00:00:00 2001 From: Raymond Lam Date: Fri, 17 Aug 2018 03:00:53 -0400 Subject: [PATCH] Fix custom tags by rolling back #643 & #664 (#670) Pull requests #643 and #664 together fix the issue reported in issue #617, but the change in behavior is causing semvers concerns. See issue #669. Therefore, roll back #643 and #664 and later reintroduce in next planned major release (v3.0). Fixes #669 --- mustache.js | 5 ++--- test/parse-test.js | 47 ---------------------------------------------- 2 files changed, 2 insertions(+), 50 deletions(-) diff --git a/mustache.js b/mustache.js index 5840d3b28..d07fd1964 100644 --- a/mustache.js +++ b/mustache.js @@ -444,11 +444,10 @@ */ Writer.prototype.parse = function parse (template, tags) { var cache = this.cache; - var cacheKey = template + ':' + (tags || mustache.tags).join(':'); - var tokens = cache[cacheKey]; + var tokens = cache[template]; if (tokens == null) - tokens = cache[cacheKey] = parseTemplate(template, tags); + tokens = cache[template] = parseTemplate(template, tags); return tokens; }; diff --git a/test/parse-test.js b/test/parse-test.js index 959699bc2..97c26db94 100644 --- a/test/parse-test.js +++ b/test/parse-test.js @@ -53,10 +53,6 @@ var expectations = { : [ [ '#', 'foo', 0, 8, [ [ '#', 'a', 11, 17, [ [ 'text', ' ', 18, 22 ], [ 'name', 'b', 22, 27 ], [ 'text', '\n', 27, 28 ] ], 30 ] ], 37 ] ] }; -beforeEach(function (){ - Mustache.clearCache(); -}); - describe('Mustache.parse', function () { for (var template in expectations) { @@ -107,47 +103,4 @@ describe('Mustache.parse', function () { }); }); - describe('when parsing a template without tags specified followed by the same template with tags specified', function() { - it('returns different tokens for the latter parse', function() { - var template = "{{foo}}[bar]"; - var parsedWithBraces = Mustache.parse(template); - var parsedWithBrackets = Mustache.parse(template, ['[', ']']); - assert.notDeepEqual(parsedWithBrackets, parsedWithBraces); - }); - }); - - describe('when parsing a template with tags specified followed by the same template with different tags specified', function() { - it('returns different tokens for the latter parse', function() { - var template = "(foo)[bar]"; - var parsedWithParens = Mustache.parse(template, ['(', ')']); - var parsedWithBrackets = Mustache.parse(template, ['[', ']']); - assert.notDeepEqual(parsedWithBrackets, parsedWithParens); - }); - }); - - describe('when parsing a template after already having parsed that template with a different Mustache.tags', function() { - it('returns different tokens for the latter parse', function() { - var template = "{{foo}}[bar]"; - var parsedWithBraces = Mustache.parse(template); - - var oldTags = Mustache.tags; - Mustache.tags = ['[', ']']; - var parsedWithBrackets = Mustache.parse(template); - Mustache.tags = oldTags; - - assert.notDeepEqual(parsedWithBrackets, parsedWithBraces); - }); - }); - - describe('when parsing a template with the same tags second time, return the cached tokens', function () { - it('returns the same tokens for the latter parse', function () { - var template = '{{foo}}[bar]'; - var parsedResult1 = Mustache.parse(template); - var parsedResult2 = Mustache.parse(template); - - assert.deepEqual(parsedResult1, parsedResult2); - assert.ok(parsedResult1 === parsedResult2); - }); - }); - });