From bda4621a8d7e8ef5073fa8a180d8a0a4aa57ffd6 Mon Sep 17 00:00:00 2001 From: Paul Armstrong Date: Sat, 18 Feb 2012 08:30:46 -0800 Subject: [PATCH] Ensure set = (number) is truly a number Closes gh-53 --- lib/tags/set.js | 2 +- lib/tags/set.test.js | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/tags/set.js b/lib/tags/set.js index 7df3eb77..8099c571 100644 --- a/lib/tags/set.js +++ b/lib/tags/set.js @@ -15,7 +15,7 @@ module.exports = function (indent, parentBlock, parser) { } value = thisArgs[0]; - if ((/^\'|^\"|^\{|^\[/).test(value) || value === 'true' || value === 'false') { + if (helpers.isLiteral(value) || (/^\{|^\[/).test(value) || value === 'true' || value === 'false') { return ' ' + varname + ' = ' + value + ';'; } diff --git a/lib/tags/set.test.js b/lib/tags/set.test.js index caa4bd6c..1341e455 100644 --- a/lib/tags/set.test.js +++ b/lib/tags/set.test.js @@ -34,5 +34,11 @@ exports.set = testCase({ swig.compile('{% block a %}{{ foo }}{% endblock %}', { filename: 'a' }); test.strictEqual(swig.compile('{% extends "a" %}{% set foo = "bar" %}')(), 'bar'); test.done(); + }, + + 'set number is really a number [gh-53]': function (test) { + test.strictEqual(swig.compile('{% set foo = 1 %}{{ foo|add(1) }}')(), '2', 'literal number is a number'); + test.strictEqual(swig.compile('{% set foo = "1" %}{{ foo|add(1) }}')(), '11', 'string number is not a number'); + test.done(); } });