unist utility to find nodes between two nodes.
npm i -S unist-util-find-all-between
const between = require('unist-util-find-all-between')
const u = require('unist-builder')
const parent = u('tree', [
u('leaf', 'leaf 1'),
u('node', [u('leaf', 'leaf 2'), u('leaf', 'leaf 3')]),
u('leaf', 'leaf 4'),
u('node', [u('leaf', 'leaf 5')]),
u('leaf', 'leaf 6'),
u('void'),
u('leaf', 'leaf 7')
])
const result = between(parent, 0, 4, 'leaf')
console.log(result)
Yields:
[ { type: 'leaf', value: 'leaf 4' } ]
You can also pass a node in as start
and/or end
. For example given the tree above,
// ...
const start = {
type: 'leaf',
value: 'leaf 4'
}
const end = {
type: 'leaf',
value: 'leaf 6'
}
const result = between(parent, start, end, 'node')
console.dir(result, {depth: null})
Yields:
[ { type: 'node',
children: [ { type: 'leaf', value: 'leaf 5' } ] } ]
Find all child nodes of parent
, that pass test
between but not including start
and end
.
Type: Node
Parent node to search through.
Type: Node
| index
Child of parent
node. Can be an actual node or the index of a child node. If a node is given, unist-util-find is used to find the node.
Type: Node
| index
Child of parent
node. Can be an actual node or the index of a child node. If a node is given, unist-util-find is used to find the node.
Type: Function
| String
| Object
| Array
Test to find nodes. Uses unist-util-is to check.
PRs accepted and greatly appreciated.
MIT © Paul Zimmer