0.1.1 • Published 10 years ago

aster-traverse v0.1.1

Weekly downloads
2
License
MIT
Repository
github
Last release
10 years ago

aster-traverse

NPM version Build Status

Traverse with aster.

Usage

First, install aster-traverse as a development dependency:

npm install --save-dev aster-traverse

Then, add it to your build script:

var aster = require('aster');
var traverse = require('aster-traverse');

aster.src('src/**/*.js')
.map(traverse({
  replace: true,
  leave: function (node) {
    // Optimizing obvious calculations, concatenations, etc.
    if (node.type === 'BinaryExpression' && node.left.type === 'Literal' && node.right.type === 'Literal') {
      return {type: 'Literal', value: eval(JSON.stringify(node.left.value) + node.operator + JSON.stringify(node.right.value))};
    }
  }
}))
.map(aster.dest('dist'))
.subscribe(aster.runner);

API

traverse(options)

options.enter, options.leave

Type: Function

Handler functions to be executed on enter/leave of each node.

options.replace

Type: Boolean

If set, result of enter/leave would be used as replacement for node.

Special values

traverse.Skip

If returned from handler, this node would be skipped from processing.

traverse.Break

If returned from handler, breaks traversal completely.

License

MIT License