cannabis
Version:
TypeScript AST Query library
51 lines • 1.99 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var micromatch_1 = __importDefault(require("micromatch"));
var misc_utils_of_mine_generic_1 = require("misc-utils-of-mine-generic");
var astNode_1 = require("./node/astNode");
var path_1 = require("./node/path");
function searchSource(p, options) {
if (options === void 0) { options = { include: [] }; }
var m = micromatch_1.default(p.map(function (p) { return p.path; }), options.include, options.micromatch);
if (options.exclude) {
m = micromatch_1.default(p.map(function (p) { return p.path; }), options.exclude, options.micromatch);
}
return p.map(function (p) { return m.includes(p.path) ? p : undefined; }).filter(misc_utils_of_mine_generic_1.notUndefined);
}
exports.searchSource = searchSource;
function selectNodes(root, d) {
var a = [];
if (d.ancestors) {
a.push.apply(a, astNode_1.getASTNodeAncestors(root));
}
if (d.descendants) {
a.push.apply(a, astNode_1.getASTNodeDescendants(root));
}
else if (d.children) {
a.push.apply(a, astNode_1.getASTNodeChildren(root));
}
if (d.siblings) {
a.push.apply(a, astNode_1.getASTNodeSiblings(root));
}
return a;
}
function queryByPath(o) {
var input = selectNodes(o.root, o.selectNodeDirection || { descendants: true });
var source = input.map(function (n) { return ({
data: n,
path: o.path === 'index' ? path_1.getASTNodeIndexPath(n) : o.path === 'kind' ? path_1.getASTNodeKindPath(n) : path_1.getASTNodeNamePath(n)
}); });
var results = searchSource(source, o);
return {
result: results
};
}
exports.queryByPath = queryByPath;
// export function selectNode(options: MatcNodeOptions): Result {
// const result = {}
// return result
// }
//# sourceMappingURL=match.js.map