UNPKG

greybel-languageserver-core

Version:
55 lines 2.06 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.lookupBase = exports.lookupIdentifier = exports.lookupScopes = exports.lookupRootScope = void 0; const miniscript_core_1 = require("miniscript-core"); const lookupRootScope = (origin) => { let current = origin; while (current.scope) { current = current.scope; } return current; }; exports.lookupRootScope = lookupRootScope; const lookupScopes = (origin) => { if (!origin.scope) return [origin]; const rootScope = (0, exports.lookupRootScope)(origin); if (rootScope === origin.scope) return [origin, rootScope]; return [origin, origin.scope, rootScope]; }; exports.lookupScopes = lookupScopes; const lookupIdentifier = (root) => { // non greedy identifier to string method; can be used instead of ASTStringify switch (root.type) { case miniscript_core_1.ASTType.CallStatement: return (0, exports.lookupIdentifier)(root.expression); case miniscript_core_1.ASTType.CallExpression: return (0, exports.lookupIdentifier)(root.base); case miniscript_core_1.ASTType.Identifier: return root; case miniscript_core_1.ASTType.MemberExpression: return (0, exports.lookupIdentifier)(root.identifier); case miniscript_core_1.ASTType.IndexExpression: return (0, exports.lookupIdentifier)(root.index); default: return null; } }; exports.lookupIdentifier = lookupIdentifier; const lookupBase = (node = null) => { switch (node?.type) { case miniscript_core_1.ASTType.MemberExpression: return node.base; case miniscript_core_1.ASTType.IndexExpression: return node.base; case miniscript_core_1.ASTType.CallExpression: return node.base; case miniscript_core_1.ASTType.SliceExpression: return node.base; default: return null; } }; exports.lookupBase = lookupBase; //# sourceMappingURL=ast-utils.js.map