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(); } });