diff --git a/lib/tags/spaceless.js b/lib/tags/spaceless.js index e0e10668..32f3fdc4 100644 --- a/lib/tags/spaceless.js +++ b/lib/tags/spaceless.js @@ -15,20 +15,12 @@ var utils = require('../utils'); * */ exports.compile = function (compiler, args, content, parents, options, blockName) { - function stripWhitespace(tokens) { - return utils.map(tokens, function (token) { - if (token.content || typeof token !== 'string') { - token.content = stripWhitespace(token.content); - return token; - } + var out = compiler(content, parents, options, blockName); + out += '_output = _output.replace(/^\\s+/, "")\n' + + ' .replace(/>\\s+<")\n' + + ' .replace(/\\s+$/, "");\n'; - return token.replace(/^\s+/, '') - .replace(/>\s+<') - .replace(/\s+$/, ''); - }); - } - - return compiler(stripWhitespace(content), parents, options, blockName); + return out; }; exports.parse = function (str, line, parser) { diff --git a/tests/tags/spaceless.test.js b/tests/tags/spaceless.test.js index 9207739a..165da6ee 100644 --- a/tests/tags/spaceless.test.js +++ b/tests/tags/spaceless.test.js @@ -7,8 +7,8 @@ var cases = [ { c: '{% spaceless %}

foo

bar

{% endspaceless %}', e: '

foo

bar

' }, { c: '{% spaceless %}{% if true %}

{% endif %}{% endspaceless %}', e: '

' }, { c: '{% spaceless %}{% if false %}{% else %}

{% endif %}{% endspaceless %}', e: '

' }, - { c: '{% spaceless %}{% macro foo %}

{% endmacro %}{% endspaceless %}{{ foo() }}', e: '

' }, - { c: '{% macro foo %}

{% endmacro %}{% spaceless %}{{ foo() }}{% endspaceless %}', e: '

' } + { c: '{% spaceless %}{% macro foo %}

{% endmacro %}{% endspaceless %}{{ foo() }}', e: '

' }, + { c: '{% macro foo %}

{% endmacro %}{% spaceless %}{{ foo() }}{% endspaceless %}', e: '

' } ]; describe('Tag: spaceless', function () {