unist-util-walker
v1.0.0
Published
Walk unist trees with enter and leave functions
Downloads
2,122
Maintainers
Readme
UNIST UTIL WALKER
Inspired by estree-walker, this package provides a method to walk unist trees, by providing an enter
and leave
function.
The main advantage over unist-util-visit is that we can enter all child nodes and accumulate data,
which we can then use in the leave function of the parent.
Installation
This package is ESM only: Node 12+ is needed to use it and it must be imported instead of required.
NPM
npm install unist-util-walker
YARN
yarn add unist-util-walker
PNPM
pnpm add unist-util-walker
Usage
import type { Node, Parent } from 'unist';
import { walk } from 'unist-util-walker';
import { u } from 'unist-builder';
const tree: Node = u('root', [
u('subtree', {id: 1}),
u('subtree', {id: 2}, [
u('node', [u('leaf', {id: 1}), u('leaf', {id: 2})]),
u('leaf', {id: 3}),
u('void'),
]),
]);
walk(tree, {
enter(node: Node, parent?: Parent, index?: number) {
// some code happens
},
leave(node: Node, parent?: Parent, index?: number) {
// some code happens
}
});
Inside of the enter
and leave
functions, you can call the following functions:
this.break()
Skips children and the leave function of the current node (only useful in enter).this.skip()
Skips children, but still runs the leave function of the current node (only useful in enter).this.remove()
Removes the node from the tree (has no effect on root node).this.replace(node: Node)
Replaces the node with a new one.