UNPKG

free-swig

Version:

A simple, powerful, and extendable templating engine for node.js, similar to Django, Jinja2, and Twig.

68 lines (62 loc) 1.34 kB
/** * Inject the content from the parent template's block of the same name into the current block. * * See <a href="#inheritance">Template Inheritance</a> for more information. * * @alias parent * * @example * {% extends "./foo.html" %} * {% block content %} * My content. * {% parent %} * {% endblock %} * */ exports.compile = function ( compiler, args, content, parents, options, blockName ) { if (!parents || !parents.length) { return ''; } const parentFile = args[0]; const breaker = true; const l = parents.length; let i = 0; let parent; let block; for (i; i < l; i += 1) { parent = parents[i]; if (!parent.blocks || !parent.blocks.hasOwnProperty(blockName)) { continue; } if (breaker && parentFile !== parent.name) { block = parent.blocks[blockName]; return ( block.compile( compiler, [blockName], block.content, parents.slice(i + 1), options ) + '\n' ); } } }; exports.parse = function (str, line, parser, types, stack, opts) { parser.on('*', function (token) { throw new Error( 'Unexpected argument "' + token.match + '" on line ' + line + '.' ); }); parser.on('end', function () { this.out.push(opts.filename); }); return true; };