twing
Version:
First-class Twig engine for Node.js
49 lines (48 loc) • 1.61 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseArguments = exports.createIncludeTagHandler = void 0;
const include_1 = require("../node/include/include");
const array_1 = require("../node/expression/array");
const createIncludeTagHandler = () => {
const tag = 'include';
return {
tag,
initialize: (parser) => {
return (token, stream) => {
const { line, column } = token;
const expression = parser.parseExpression(stream);
const { ignoreMissing, only, variables } = (0, exports.parseArguments)(parser, stream, line, column);
return (0, include_1.createIncludeNode)({
only,
ignoreMissing
}, {
expression,
variables
}, token.line, token.column, tag);
};
}
};
};
exports.createIncludeTagHandler = createIncludeTagHandler;
const parseArguments = (parser, stream, line, column) => {
let ignoreMissing = false;
if (stream.nextIf("NAME", 'ignore')) {
stream.expect("NAME", 'missing');
ignoreMissing = true;
}
let variables = (0, array_1.createArrayNode)([], line, column);
if (stream.nextIf("NAME", 'with')) {
variables = parser.parseExpression(stream);
}
let only = false;
if (stream.nextIf("NAME", 'only')) {
only = true;
}
stream.expect("TAG_END");
return {
variables,
only,
ignoreMissing
};
};
exports.parseArguments = parseArguments;