What is unist-util-visit?
The unist-util-visit package is a utility for visiting nodes in a unist syntax tree. It allows for traversal of the tree and application of functions to nodes that match specified conditions. This can be useful for manipulating or inspecting the tree in various ways, such as filtering nodes, applying transformations, or extracting information.
What are unist-util-visit's main functionalities?
Visiting nodes
This feature allows you to visit all nodes in a unist syntax tree that match a specified type. The provided function is called for each matching node. This can be useful for performing operations on specific types of nodes.
visit(tree, 'type', node => { console.log(node) })
Visiting nodes with a test function
This feature allows you to visit all nodes that pass a test implemented by a function. The test function is called with each node, and if it returns true, the node is considered a match. This allows for more complex matching conditions beyond just type.
visit(tree, node => node.value === 'specific value', node => { console.log(node) })
Exiting early
This feature allows you to exit the traversal early by returning `visit.EXIT` from the visitor function. This can be useful for optimizing performance by avoiding unnecessary traversal once a certain condition is met.
visit(tree, 'type', (node, index, parent) => { if (node.value === 'stop') return visit.EXIT })
Other packages similar to unist-util-visit
unist-util-select
This package provides a way to select nodes in a unist syntax tree using CSS-like selectors. It's similar to unist-util-visit in that it allows for node selection, but it uses a different approach based on selectors rather than explicit traversal and testing.
unist-util-filter
unist-util-filter offers functionality to create a new tree by filtering nodes in a unist syntax tree based on a given condition. It's similar to unist-util-visit in its ability to apply conditions to nodes, but instead of visiting nodes, it filters them to produce a new tree.
unist-util-map
This package allows for the creation of a new unist syntax tree by applying a function to every node in an input tree. It's related to unist-util-visit in that it involves applying functions to nodes, but unist-util-map applies the function to all nodes and constructs a new tree based on the results.
unist-util-visit
unist utility to visit nodes.
Install
This package is ESM only:
Node 12+ is needed to use it and it must be import
ed instead of require
d.
npm:
npm install unist-util-visit
Use
import {u} from 'unist-builder'
import {visit} from 'unist-util-visit'
const tree = u('tree', [
u('leaf', '1'),
u('node', [u('leaf', '2')]),
u('void'),
u('leaf', '3')
])
visit(tree, 'leaf', (node) => {
console.log(node)
})
Yields:
{ type: 'leaf', value: '1' }
{ type: 'leaf', value: '2' }
{ type: 'leaf', value: '3' }
Note: this example also uses unist-builder
, to run the example ensure both unist-builder
and unist-util-visit
are installed:
npm install unist-builder unist-util-visit
API
This package exports the following identifiers: visit
, CONTINUE
, SKIP
, and
EXIT
.
There is no default export.
visit(tree[, test], visitor[, reverse])
This function works exactly the same as unist-util-visit-parents
,
but visitor
has a different signature.
next? = visitor(node, index, parent)
Instead of being passed an array of ancestors, visitor
is called with the
node
’s index
and its parent
. The optional return value
next
is documented in unist-util-visit-parents
’s readme.
Otherwise the same as unist-util-visit-parents
.
Related
Contribute
See contributing.md
in syntax-tree/.github
for ways to get
started.
See support.md
for ways to get help.
This project has a code of conduct.
By interacting with this repository, organization, or community you agree to
abide by its terms.
License
MIT © Titus Wormer