2022-05-07 16:17:37 +02: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, {
|
|
|
|
filterFn: ({ value, parents, matchedBy, context }) => {
|
2020-02-22 11:13:56 -08:00
|
|
|
matchedBy.forEach((needle) => {
|
2020-04-08 09:55:15 -07:00
|
|
|
context[needle].push([value, parents])
|
|
|
|
})
|
2020-01-26 09:21:21 -08:00
|
|
|
}
|
2020-04-08 09:55:15 -07:00
|
|
|
})
|
2019-09-02 16:56:26 +02:00
|
|
|
|
2020-04-08 09:55:15 -07:00
|
|
|
return (haystack) => {
|
|
|
|
const context = Object.create(null)
|
|
|
|
needles.forEach((needle) => {
|
|
|
|
context[needle] = []
|
|
|
|
})
|
|
|
|
return scanner(haystack, context)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-05-07 16:17:37 +02:00
|
|
|
export {
|
|
|
|
createFindInTree,
|
|
|
|
}
|