twing
Version:
First-class Twig engine for Node.js
33 lines (32 loc) • 1.34 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createApplyTagHandler = void 0;
const apply_1 = require("../node/apply");
const array_1 = require("../node/expression/array");
const constant_1 = require("../node/expression/constant");
const createApplyTagHandler = () => {
const tag = 'apply';
const tokenHandler = {
tag,
initialize: (parser) => {
return (token, stream) => {
const { line, column } = token;
const filterDefinitions = parser.parseFilterDefinitions(stream);
stream.expect("TAG_END");
let body = parser.subparse(stream, tag, (token) => {
return token.test("NAME", 'endapply');
});
stream.next();
stream.expect("TAG_END");
return (0, apply_1.createApplyNode)((0, array_1.createArrayNode)(filterDefinitions.map(({ name, arguments: filterArgument }) => {
return {
key: (0, constant_1.createConstantNode)(name, line, column),
value: filterArgument
};
}), line, column), body, line, column);
};
}
};
return tokenHandler;
};
exports.createApplyTagHandler = createApplyTagHandler;