twing
Version:
First-class Twig engine for Node.js
40 lines (39 loc) • 1.37 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createExtendsTagHandler = void 0;
/**
* Loops over each item of a sequence.
*
* <pre>
* <ul>
* {% for user in users %}
* <li>{{ user.username|e }}</li>
* {% endfor %}
* </ul>
* </pre>
*/
const parsing_1 = require("../error/parsing");
const createExtendsTagHandler = () => {
const tag = 'extends';
return {
tag,
initialize: (parser) => {
return (token, stream) => {
const { line, column } = token;
if (parser.peekBlockStack()) {
throw (0, parsing_1.createParsingError)('Cannot use "extend" in a block.', { line, column }, stream.source);
}
else if (!parser.isMainScope()) {
throw (0, parsing_1.createParsingError)('Cannot use "extend" in a macro.', { line, column }, stream.source);
}
if (parser.parent !== null) {
throw (0, parsing_1.createParsingError)('Multiple extends tags are forbidden.', { line, column }, stream.source);
}
parser.parent = parser.parseExpression(stream);
stream.expect("TAG_END");
return null;
};
}
};
};
exports.createExtendsTagHandler = createExtendsTagHandler;