node package manager

@buxlabs/ast

@buxlabs/ast - AbstractSyntaxTree

You might find the class useful if you want to abstract away some ast manipulations such as adding, removing, replacing the nodes and others. The test folder is a good starting point for examples of usage. PRs are highly welcome.

  • 100% coverage

Installation

npm install --save @buxlabs/ast

Methods

has

  var source = 'var a = "x";';
  var ast = new AbstractSyntaxTree(source);
  ast.has('VariableDeclaration'); // true 

find

  var source = 'var a = "x";';
  var ast = new AbstractSyntaxTree(source);
  ast.find('VariableDeclaration'); // [ { ... } ] 

first

  var source = 'var a = "x";';
  var ast = new AbstractSyntaxTree(source);
  ast.first('VariableDeclaration'); // { ... } 

last

  var source = 'var a = "x";';
  var ast = new AbstractSyntaxTree(source);
  ast.last('VariableDeclaration'); // { ... } 

remove

  var source = '"use strict"; var b = 4;';
  var ast = new AbstractSyntaxTree(source);
  ast.remove({ type: 'Literal', value: 'use strict' });

replace

  var source = 'var a = 1';
  var ast = new AbstractSyntaxTree(source);
  ast.replace({
    enter: function (node) {
      if (node.type === 'VariableDeclaration') {
        node.kind = 'let';
      }
      return node;
    }
  });

prepend / append

  var source = 'var a = 1;';
  var ast = new AbstractSyntaxTree(source);
  ast.prepend({
    type: 'ExpressionStatement',
    expression: {
      type: 'Literal',
      value: 'use strict'
    }
  });

toSource

  var source = 'var a = 1;';
  var ast = new AbstractSyntaxTree(source);
  ast.toSource(); // 'var a = 1;';