Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/0phoff/unist-util-walker
Walk unist trees with enter and leave functions
https://github.com/0phoff/unist-util-walker
ast syntax-tree traverse tree unifiedjs unist unist-util visit walk
Last synced: about 2 months ago
JSON representation
Walk unist trees with enter and leave functions
- Host: GitHub
- URL: https://github.com/0phoff/unist-util-walker
- Owner: 0phoff
- License: mit
- Created: 2022-07-07T15:54:33.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2022-07-11T13:02:25.000Z (over 2 years ago)
- Last Synced: 2024-10-19T20:57:42.627Z (2 months ago)
- Topics: ast, syntax-tree, traverse, tree, unifiedjs, unist, unist-util, visit, walk
- Language: TypeScript
- Homepage:
- Size: 23.4 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# UNIST UTIL WALKER
_Talk the Talk - Walk the Tree_
[![npm version](https://img.shields.io/npm/v/unist-util-walker?color=blue&logo=npm)](https://www.npmjs.com/package/unist-util-walker)
[![npm downloads](https://img.shields.io/npm/dt/unist-util-walker?color=blue&logo=nodedotjs)](https://www.npmjs.com/package/unist-util-walker)
[![main](https://github.com/0phoff/unist-util-walker/actions/workflows/main.yml/badge.svg)](https://github.com/0phoff/unist-util-walker/actions/workflows/main.yml)
[![codecov](https://codecov.io/gh/0phoff/unist-util-walker/branch/master/graph/badge.svg?token=JWVVNRI6IK)](https://codecov.io/gh/0phoff/unist-util-walker)Inspired by [estree-walker](https://github.com/Rich-Harris/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](https://github.com/syntax-tree/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
```bash
npm install unist-util-walker
```### YARN
```bash
yarn add unist-util-walker
```### PNPM
```bash
pnpm add unist-util-walker
```## Usage
```typescript
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.