UNPKG

@glimmer/compiler

Version:
57 lines (42 loc) 6.59 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getDynamicVarKeyword = void 0; var _syntax = require("@glimmer/syntax"); var _result = require("../../../../shared/result"); var mir = _interopRequireWildcard(require("../../../2-encoding/mir")); var _expressions = require("../../visitors/expressions"); function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } function assertGetDynamicVarKeyword(node) { let call = node.type === 'AppendContent' ? node.value : node; let named = call.type === 'Call' ? call.args.named : null; let positionals = call.type === 'Call' ? call.args.positional : null; if (named && !named.isEmpty()) { return (0, _result.Err)((0, _syntax.generateSyntaxError)(`(-get-dynamic-vars) does not take any named arguments`, node.loc)); } let varName = positionals === null || positionals === void 0 ? void 0 : positionals.nth(0); if (!varName) { return (0, _result.Err)((0, _syntax.generateSyntaxError)(`(-get-dynamic-vars) requires a var name to get`, node.loc)); } if (positionals && positionals.size > 1) { return (0, _result.Err)((0, _syntax.generateSyntaxError)(`(-get-dynamic-vars) only receives one positional arg`, node.loc)); } return (0, _result.Ok)(varName); } function translateGetDynamicVarKeyword({ node, state }, name) { return _expressions.VISIT_EXPRS.visit(name, state).mapOk(name => new mir.GetDynamicVar({ name, loc: node.loc })); } const getDynamicVarKeyword = { assert: assertGetDynamicVarKeyword, translate: translateGetDynamicVarKeyword }; exports.getDynamicVarKeyword = getDynamicVarKeyword; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9wYXNzZXMvMS1ub3JtYWxpemF0aW9uL2tleXdvcmRzL3V0aWxzL2R5bmFtaWMtdmFycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBRUE7O0FBQ0E7O0FBRUE7Ozs7OztBQUdBLFNBQUEsMEJBQUEsQ0FBQSxJQUFBLEVBQTREO0FBQzFELE1BQUksSUFBSSxHQUFHLElBQUksQ0FBSixJQUFBLEtBQUEsZUFBQSxHQUFnQyxJQUFJLENBQXBDLEtBQUEsR0FBWCxJQUFBO0FBRUEsTUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFKLElBQUEsS0FBQSxNQUFBLEdBQXVCLElBQUksQ0FBSixJQUFBLENBQXZCLEtBQUEsR0FBWixJQUFBO0FBQ0EsTUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFKLElBQUEsS0FBQSxNQUFBLEdBQXVCLElBQUksQ0FBSixJQUFBLENBQXZCLFVBQUEsR0FBbEIsSUFBQTs7QUFFQSxNQUFJLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBbkIsT0FBYyxFQUFkLEVBQStCO0FBQzdCLFdBQU8saUJBQ0wsaUNBQW1CLHVEQUFuQixFQUE2RSxJQUFJLENBRG5GLEdBQ0UsQ0FESyxDQUFQO0FBR0Q7O0FBRUQsTUFBSSxPQUFPLEdBQUcsV0FBVyxLQUFYLElBQUEsSUFBQSxXQUFXLEtBQUEsS0FBWCxDQUFBLEdBQVcsS0FBWCxDQUFBLEdBQUEsV0FBVyxDQUFYLEdBQUEsQ0FBZCxDQUFjLENBQWQ7O0FBRUEsTUFBSSxDQUFKLE9BQUEsRUFBYztBQUNaLFdBQU8saUJBQUksaUNBQW1CLGdEQUFuQixFQUFzRSxJQUFJLENBQXJGLEdBQVcsQ0FBSixDQUFQO0FBQ0Q7O0FBRUQsTUFBSSxXQUFXLElBQUksV0FBVyxDQUFYLElBQUEsR0FBbkIsQ0FBQSxFQUF5QztBQUN2QyxXQUFPLGlCQUNMLGlDQUFtQixzREFBbkIsRUFBNEUsSUFBSSxDQURsRixHQUNFLENBREssQ0FBUDtBQUdEOztBQUVELFNBQU8sZ0JBQVAsT0FBTyxDQUFQO0FBQ0Q7O0FBRUQsU0FBQSw2QkFBQSxDQUNFO0FBQUEsRUFBQSxJQUFBO0FBQVEsRUFBQTtBQUFSLENBREYsRUFBQSxJQUFBLEVBRTRCO0FBRTFCLFNBQU8seUJBQUEsS0FBQSxDQUFBLElBQUEsRUFBQSxLQUFBLEVBQUEsS0FBQSxDQUNKLElBQUQsSUFBVSxJQUFJLEdBQUcsQ0FBUCxhQUFBLENBQXNCO0FBQUEsSUFBQSxJQUFBO0FBQVEsSUFBQSxHQUFHLEVBQUUsSUFBSSxDQUFDO0FBQWxCLEdBQXRCLENBREwsQ0FBUDtBQUdEOztBQUVNLE1BQU0sb0JBQW9CLEdBSTdCO0FBQ0YsRUFBQSxNQUFNLEVBREosMEJBQUE7QUFFRixFQUFBLFNBQVMsRUFBRTtBQUZULENBSkciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBU1R2MiwgZ2VuZXJhdGVTeW50YXhFcnJvciB9IGZyb20gJ0BnbGltbWVyL3N5bnRheCc7XG5cbmltcG9ydCB7IEVyciwgT2ssIFJlc3VsdCB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9yZXN1bHQnO1xuaW1wb3J0ICogYXMgbWlyIGZyb20gJy4uLy4uLy4uLzItZW5jb2RpbmcvbWlyJztcbmltcG9ydCB7IE5vcm1hbGl6YXRpb25TdGF0ZSB9IGZyb20gJy4uLy4uL2NvbnRleHQnO1xuaW1wb3J0IHsgVklTSVRfRVhQUlMgfSBmcm9tICcuLi8uLi92aXNpdG9ycy9leHByZXNzaW9ucyc7XG5pbXBvcnQgeyBHZW5lcmljS2V5d29yZE5vZGUsIEtleXdvcmREZWxlZ2F0ZSB9IGZyb20gJy4uL2ltcGwnO1xuXG5mdW5jdGlvbiBhc3NlcnRHZXREeW5hbWljVmFyS2V5d29yZChub2RlOiBHZW5lcmljS2V5d29yZE5vZGUpOiBSZXN1bHQ8QVNUdjIuRXhwcmVzc2lvbk5vZGU+IHtcbiAgbGV0IGNhbGwgPSBub2RlLnR5cGUgPT09ICdBcHBlbmRDb250ZW50JyA/IG5vZGUudmFsdWUgOiBub2RlO1xuXG4gIGxldCBuYW1lZCA9IGNhbGwudHlwZSA9PT0gJ0NhbGwnID8gY2FsbC5hcmdzLm5hbWVkIDogbnVsbDtcbiAgbGV0IHBvc2l0aW9uYWxzID0gY2FsbC50eXBlID09PSAnQ2FsbCcgPyBjYWxsLmFyZ3MucG9zaXRpb25hbCA6IG51bGw7XG5cbiAgaWYgKG5hbWVkICYmICFuYW1lZC5pc0VtcHR5KCkpIHtcbiAgICByZXR1cm4gRXJyKFxuICAgICAgZ2VuZXJhdGVTeW50YXhFcnJvcihgKC1nZXQtZHluYW1pYy12YXJzKSBkb2VzIG5vdCB0YWtlIGFueSBuYW1lZCBhcmd1bWVudHNgLCBub2RlLmxvYylcbiAgICApO1xuICB9XG5cbiAgbGV0IHZhck5hbWUgPSBwb3NpdGlvbmFscz8ubnRoKDApO1xuXG4gIGlmICghdmFyTmFtZSkge1xuICAgIHJldHVybiBFcnIoZ2VuZXJhdGVTeW50YXhFcnJvcihgKC1nZXQtZHluYW1pYy12YXJzKSByZXF1aXJlcyBhIHZhciBuYW1lIHRvIGdldGAsIG5vZGUubG9jKSk7XG4gIH1cblxuICBpZiAocG9zaXRpb25hbHMgJiYgcG9zaXRpb25hbHMuc2l6ZSA+IDEpIHtcbiAgICByZXR1cm4gRXJyKFxuICAgICAgZ2VuZXJhdGVTeW50YXhFcnJvcihgKC1nZXQtZHluYW1pYy12YXJzKSBvbmx5IHJlY2VpdmVzIG9uZSBwb3NpdGlvbmFsIGFyZ2AsIG5vZGUubG9jKVxuICAgICk7XG4gIH1cblxuICByZXR1cm4gT2sodmFyTmFtZSk7XG59XG5cbmZ1bmN0aW9uIHRyYW5zbGF0ZUdldER5bmFtaWNWYXJLZXl3b3JkKFxuICB7IG5vZGUsIHN0YXRlIH06IHsgbm9kZTogR2VuZXJpY0tleXdvcmROb2RlOyBzdGF0ZTogTm9ybWFsaXphdGlvblN0YXRlIH0sXG4gIG5hbWU6IEFTVHYyLkV4cHJlc3Npb25Ob2RlXG4pOiBSZXN1bHQ8bWlyLkdldER5bmFtaWNWYXI+IHtcbiAgcmV0dXJuIFZJU0lUX0VYUFJTLnZpc2l0KG5hbWUsIHN0YXRlKS5tYXBPayhcbiAgICAobmFtZSkgPT4gbmV3IG1pci5HZXREeW5hbWljVmFyKHsgbmFtZSwgbG9jOiBub2RlLmxvYyB9KVxuICApO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0RHluYW1pY1ZhcktleXdvcmQ6IEtleXdvcmREZWxlZ2F0ZTxcbiAgR2VuZXJpY0tleXdvcmROb2RlLFxuICBBU1R2Mi5FeHByZXNzaW9uTm9kZSxcbiAgbWlyLkdldER5bmFtaWNWYXJcbj4gPSB7XG4gIGFzc2VydDogYXNzZXJ0R2V0RHluYW1pY1ZhcktleXdvcmQsXG4gIHRyYW5zbGF0ZTogdHJhbnNsYXRlR2V0RHluYW1pY1ZhcktleXdvcmQsXG59O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==