swig
Version:
A simple, powerful, and extendable templating engine for node.js and browsers, similar to Django, Jinja2, and Twig.
43 lines (36 loc) • 1.03 kB
JavaScript
var utils = require('../utils');
/**
* Attempts to remove whitespace between HTML tags. Use at your own risk.
*
* @alias spaceless
*
* @example
* {% spaceless %}
* {% for num in foo %}
* <li>{{ loop.index }}</li>
* {% endfor %}
* {% endspaceless %}
* // => <li>1</li><li>2</li><li>3</li>
*
*/
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;
}
return token.replace(/^\s+/, '')
.replace(/>\s+</g, '><')
.replace(/\s+$/, '');
});
}
return compiler(stripWhitespace(content), parents, options, blockName);
};
exports.parse = function (str, line, parser) {
parser.on('*', function (token) {
throw new Error('Unexpected token "' + token.match + '" on line ' + line + '.');
});
return true;
};
exports.ends = true;