ast-monkey-traverse-with-lookahead
Utility library to traverse AST, reports upcoming values
Install
This package is pure ESM. If you're not ready yet, install an older version of this program, 2.1.0 (npm i ast-monkey-traverse-with-lookahead@2.1.0
).
npm i ast-monkey-traverse-with-lookahead
Quick Take
import { strict as assert } from "assert";
import { traverse } from "ast-monkey-traverse-with-lookahead";
const input = [
{
a: "b",
},
{
c: "d",
},
{
e: "f",
},
];
const gathered = [];
// callback interface:
traverse(
input,
(key1, val1, innerObj) => {
gathered.push([key1, val1, innerObj]);
},
1, // <---------------- report one upcoming value
);
assert.deepEqual(gathered, [
// ===================
[
{
a: "b",
},
undefined,
{
depth: 0,
path: "0",
parent: [
{
a: "b",
},
{
c: "d",
},
{
e: "f",
},
],
parentType: "array",
next: [
[
"a",
"b",
{
depth: 1,
path: "0.a",
parent: {
a: "b",
},
parentType: "object",
},
],
],
},
],
// ===================
[
"a",
"b",
{
depth: 1,
path: "0.a",
parent: {
a: "b",
},
parentType: "object",
next: [
[
{
c: "d",
},
undefined,
{
depth: 0,
path: "1",
parent: [
{
a: "b",
},
{
c: "d",
},
{
e: "f",
},
],
parentType: "array",
},
],
],
},
],
// ===================
[
{
c: "d",
},
undefined,
{
depth: 0,
path: "1",
parent: [
{
a: "b",
},
{
c: "d",
},
{
e: "f",
},
],
parentType: "array",
next: [
[
"c",
"d",
{
depth: 1,
path: "1.c",
parent: {
c: "d",
},
parentType: "object",
},
],
],
},
],
// ===================
[
"c",
"d",
{
depth: 1,
path: "1.c",
parent: {
c: "d",
},
parentType: "object",
next: [
[
{
e: "f",
},
undefined,
{
depth: 0,
path: "2",
parent: [
{
a: "b",
},
{
c: "d",
},
{
e: "f",
},
],
parentType: "array",
},
],
],
},
],
// ===================
[
{
e: "f",
},
undefined,
{
depth: 0,
path: "2",
parent: [
{
a: "b",
},
{
c: "d",
},
{
e: "f",
},
],
parentType: "array",
next: [
[
"e",
"f",
{
depth: 1,
path: "2.e",
parent: {
e: "f",
},
parentType: "object",
},
],
],
},
],
// ===================
[
"e",
"f",
{
depth: 1,
path: "2.e",
parent: {
e: "f",
},
parentType: "object",
next: [],
},
],
// ===================
]);
Documentation
Please visit codsen.com for a full description of the API.
Contributing
To report bugs or request features or assistance, raise an issue on GitHub.
Licence
MIT License.
Copyright © 2010-2024 Roy Revelt and other contributors.