ast-monkey-traverse-with-lookahead
    TypeScript icon, indicating that this package has built-in type declarations

    2.1.0 • Public • Published

    ast-monkey-traverse-with-lookahead

    Utility library to traverse AST, reports upcoming values

    Install

    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 and examples.

    Contributing

    To report bugs or request features or assistance, raise an issue on GitHub.

    Licence

    MIT License

    Copyright (c) 2010-2021 Roy Revelt and other contributors

    ok codsen star

    Install

    npm i ast-monkey-traverse-with-lookahead

    DownloadsWeekly Downloads

    189

    Version

    2.1.0

    License

    MIT

    Unpacked Size

    91.9 kB

    Total Files

    11

    Last publish

    Collaborators

    • avatar