Nestable Processes Mutate

    ast-node-builder

    4.1.0 • Public • Published

    ast-node-builder

    Build and Deploy Coverage Status Version semantic-release Conventional Commits

    Checkout the api in this Playground

    Read the introductory blog post to know more about the tool.

    Build your Abstract Syntax Trees (AST) directly from code. You give the input in the form of code and get the builder API in jscodeshift.

    Usage

    const { buildAST } = require('ast-node-builder');
    const { parse }  = require('recast');
    const code = `
    class MyComponent extends ReactComponent {
      constructor(a, b) {
        this.a = a;
        this.b = b;
      }
    
      hello(x, y) {
        console.log(x, y);
      }
    }
    `;
    
    let ast = parse(code);
    
    let pseudoAst =  buildAST(ast);
    console.log(pseudoAst);

    Output

    j.classDeclaration(
      j.identifier('MyComponent'),
      j.classBody([j.methodDefinition(
        'constructor',
        j.identifier('constructor'),
        j.functionExpression(
          null,
          [j.identifier('a'),j.identifier('b')],
          j.blockStatement([j.expressionStatement(j.assignmentExpression(
            '=',
            j.memberExpression(
              j.thisExpression(),
              j.identifier('a'),
              false
            ),
            j.identifier('a')
          )),j.expressionStatement(j.assignmentExpression(
            '=',
            j.memberExpression(
              j.thisExpression(),
              j.identifier('b'),
              false
            ),
            j.identifier('b')
          ))])
        ),
        false
      ),j.methodDefinition(
        'method',
        j.identifier('hello'),
        j.functionExpression(
          null,
          [j.identifier('x'),j.identifier('y')],
          j.blockStatement([j.expressionStatement(j.callExpression(
            j.memberExpression(
              j.identifier('console'),
              j.identifier('log'),
              false
            ),
            [j.identifier('x'),j.identifier('y')]
          ))])
        ),
        false
      )]),
      j.identifier('ReactComponent')
    )

    Debugging

    Place debugger statements in the code in appropriate places and run:

    $ npm run debug
    

    This will start mocha tests in debug mode and you can use Chrome Dev Tools to view the debugger.

    Install

    npm i ast-node-builder

    DownloadsWeekly Downloads

    356

    Version

    4.1.0

    License

    MIT

    Unpacked Size

    80 kB

    Total Files

    17

    Last publish

    Collaborators

    • rajasegar