1.0.0 • Published 3 years ago
unist-util-walker v1.0.0
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-walkerYARN
yarn add unist-util-walkerPNPM
pnpm add unist-util-walkerUsage
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.