UNPKG

twing

Version:

First-class Twig engine for Node.js

49 lines (48 loc) 1.61 kB
"use strict"; 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;