UNPKG

twing

Version:

First-class Twig engine for Node.js

45 lines (44 loc) 1.65 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createFromTagHandler = void 0; const import_1 = require("../node/import"); const assignment_1 = require("../node/expression/assignment"); /** * Imports macros. * * <pre> * {% from 'forms.html' import forms %} * </pre> */ const createFromTagHandler = () => { const tag = 'from'; return { tag, initialize: (parser) => { return (token, stream) => { const templateName = parser.parseExpression(stream); stream.expect("NAME", 'import'); const targets = new Map(); do { let name = stream.expect("NAME").value; let alias = name; if (stream.nextIf("NAME", 'as')) { alias = stream.expect("NAME").value; } targets.set(name, alias); if (!stream.nextIf("PUNCTUATION", ',')) { break; } } while (true); stream.expect("TAG_END"); const aliasNode = (0, assignment_1.createAssignmentNode)(parser.getVarName(), token.line, token.column); const importNode = (0, import_1.createImportNode)(templateName, aliasNode, true, token.line, token.column, tag); for (const [name, alias] of targets) { parser.addImportedSymbol("method", alias, name, aliasNode); } return importNode; }; } }; }; exports.createFromTagHandler = createFromTagHandler;