diff options
Diffstat (limited to 'lib/template.js')
-rw-r--r-- | lib/template.js | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/lib/template.js b/lib/template.js index 0565824..f43073b 100644 --- a/lib/template.js +++ b/lib/template.js @@ -240,21 +240,25 @@ TemplateEngine.prototype.addBlock = function(name, block) { var args = Array.prototype.slice.call(arguments, 1); var callback = args.pop(); - // Extract blocks body - var _blocks = _.chain(block.blocks) - .reverse() - .map(function(blockName){ - return { - name: blockName, - body: args.pop()() - }; - }) - .reverse() - .value(); + // Extract blocks + var blocks = args + .concat([]) + .slice(-block.blocks.length); + + // Eliminate blocks from list + if (block.blocks.length > 0) args = args.slice(0, -block.blocks.length); + // Extract main body and kwargs var body = args.pop(); var kwargs = args.pop() || {}; + // Extract blocks body + var _blocks = _.map(block.blocks, function(blockName, i){ + return { + name: blockName, + body: blocks[i]() + }; + }); var func = that.bindContext(block.process); |