astral-pass

Pass system for Astral

Astral Pass

Pass helper for Astral that simplifies traversal.

Below is a simple example.

var myPass = require('astral-pass')();
 
myPass.name = 'myPass';
myPass.prereqs = [ /* other pass names here */ ];
 
myPass.
  when({
    // ... AST chunk 
  }).
  when(function (chunkinfo) {
    // return true or false 
  }).
  do(function (chunkinfo) {
 
  });

You can introduce more complicated behavior by composing passes. This is done by modifying a pass's prereqs property.

var astralPass = require('astral-pass');
 
// p1 needs some info to do its transformations 
 
var p1 = astralPass();
p1.name = 'myPass';
p1.prereqs = [ 'p2' ];
 
p1.
  when( ... ).
  do( ... );
 
// p2 gathers the info for p1 
 
var p2 = astralPass();
p2.name = 'myPass';
 
p2.
  when( ... ).
  do( ... );
 

I recommend namespacing passes with :.

MIT