npm install astral-passPass system for Astral.
There are two kinds of passes: info, and transform.
info object passed into the function as a parameter.``javascript
myPass.
info(function (chunk, info) {
info.foo = 'bar'; // persists
chunk.foo = 'bar'; // does not persist
});
`
parameter.`javascript
myPass.
info(function (chunk, info) {
info.foo = 'bar'; // does not persist chunk.foo = 'bar'; // persists
});
`Example
Below is a simple example.
`javascript
var myPass = require('astral-pass')();myPass.name = 'myPass';
myPass.prereqs = [ / other pass names here / ];
myPass.
when({
// ... AST chunk
}).
when(function (chunk, info) {
// return true or false
}).
transform(function (chunk, info) {
});
`More Complicated Passes
You can introduce more complicated behavior by composing passes.
This is done by modifying a pass's
prereques property.`javascript
var astralPass = require('astral-pass');// p1 needs some info to do its transformations
var p1 = astralPass();
p1.name = 'myPass';
p1.prereqs = [ 'p2' ];
p1.
when( ... ).
transform( ... );
// p2 gathers the info for p1
var p2 = astralPass();
p2.name = 'myPass';
p2.
when( ... ).
info( ... );
`I recommend namespacing passes with
:`.