UNPKG

cannabis

Version:
69 lines 2.79 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var ts_simple_ast_extra_1 = require("ts-simple-ast-extra"); var config_1 = require("../query/config"); var file_1 = require("../query/file"); var astNode_1 = require("./astNode"); var defaultPathOptions = { onlyIndex: false, onlyKindName: false, onlyNameOrKind: false }; function getASTNodePath(n, options) { if (options === void 0) { options = defaultPathOptions; } if (!astNode_1.isASTNode(n)) { return ''; } var pathName = options.onlyNameOrKind ? 'pathName' : options.onlyKindName ? 'pathKind' : 'pathIndex'; var result = ''; if (config_1.getConfig('cacheNodePaths')) { var cached = astNode_1.getNodeProperty(n, pathName); if (cached) { return cached; } } var finalOptions = __assign(__assign(__assign({}, defaultPathOptions), options), { dontPrintSourceFilePrefix: false, levelSeparator: '/' }); if (ts_simple_ast_extra_1.isDirectory(n) || ts_simple_ast_extra_1.isSourceFile(n)) { var root = file_1.getASTRoot().getRootDirectory(); var p = root.getRelativePathAsModuleSpecifierTo(n); result = (p.startsWith('./') ? p.substring(2) : p).replace(/\//g, finalOptions.levelSeparator); } else { var p = ts_simple_ast_extra_1.buildAstPath(n, n.getSourceFile(), { mode: config_1.getConfig('getChildren') ? 'getChildren' : 'forEachChildren', includeNodeKind: true, includeNodeName: finalOptions.onlyNameOrKind }); var nodePath = ts_simple_ast_extra_1.printAstPath(p, finalOptions); result = getASTNodePath(n.getSourceFile(), finalOptions) + finalOptions.levelSeparator + nodePath.substring(nodePath.indexOf('/') + 1); } if (config_1.getConfig('cacheNodePaths')) { astNode_1.setNodeProperty(n, pathName, result); } return result; } exports.getASTNodePath = getASTNodePath; function getASTNodeIndexPath(n) { return getASTNodePath(n, { onlyIndex: true }); } exports.getASTNodeIndexPath = getASTNodeIndexPath; function getASTNodeKindPath(n) { return getASTNodePath(n, { onlyKindName: true }); } exports.getASTNodeKindPath = getASTNodeKindPath; function getASTNodeNamePath(n) { return getASTNodePath(n, { onlyNameOrKind: true }); } exports.getASTNodeNamePath = getASTNodeNamePath; //# sourceMappingURL=path.js.map