UNPKG

twing

Version:

First-class Twig engine for Node.js

41 lines (40 loc) 1.78 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createUseTagHandler = void 0; const parsing_1 = require("../error/parsing"); const constant_1 = require("../node/expression/constant"); const trait_1 = require("../node/trait"); const node_1 = require("../node"); const createUseTagHandler = () => { const tag = 'use'; return { tag, initialize: (parser) => { return (token, stream) => { const { line, column } = token; const template = parser.parseExpression(stream); if (template.type !== "constant") { throw (0, parsing_1.createParsingError)('The template references in a "use" statement must be a string.', { line, column }, stream.source); } const targets = {}; if (stream.nextIf("NAME", 'with')) { do { const name = stream.expect("NAME").value; let alias = name; if (stream.nextIf("NAME", 'as')) { alias = stream.expect("NAME").value; } targets[name] = (0, constant_1.createConstantNode)(alias, line, column); if (!stream.nextIf("PUNCTUATION", ',')) { break; } } while (true); } stream.expect("TAG_END"); parser.addTrait((0, trait_1.createTraitNode)(template, (0, node_1.createNode)(targets, line, column), line, column)); return (0, node_1.createNode)({}, line, column, tag); }; } }; }; exports.createUseTagHandler = createUseTagHandler;