2024-02-06 22:58:49 +01:00
|
|
|
import objectScan from 'object-scan';
|
2019-09-02 16:56:26 +02:00
|
|
|
|
2020-04-08 09:55:15 -07:00
|
|
|
const createFindInTree = (needles) => {
|
|
|
|
const scanner = objectScan(needles, {
|
2024-02-06 22:58:49 +01:00
|
|
|
filterFn: ({value, parents, matchedBy, context}) => {
|
2020-02-22 11:13:56 -08:00
|
|
|
matchedBy.forEach((needle) => {
|
2024-02-06 22:58:49 +01:00
|
|
|
context[needle].push([value, parents]);
|
|
|
|
});
|
|
|
|
},
|
|
|
|
});
|
2019-09-02 16:56:26 +02:00
|
|
|
|
2020-04-08 09:55:15 -07:00
|
|
|
return (haystack) => {
|
2024-02-06 22:58:49 +01:00
|
|
|
const context = Object.create(null);
|
2020-04-08 09:55:15 -07:00
|
|
|
needles.forEach((needle) => {
|
2024-02-06 22:58:49 +01:00
|
|
|
context[needle] = [];
|
|
|
|
});
|
|
|
|
return scanner(haystack, context);
|
|
|
|
};
|
|
|
|
};
|
2020-04-08 09:55:15 -07:00
|
|
|
|
2022-05-07 16:17:37 +02:00
|
|
|
export {
|
|
|
|
createFindInTree,
|
2024-02-06 22:58:49 +01:00
|
|
|
};
|