a simple event pipe, make async easy to use.
CoffeeScript Makefile JavaScript
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
out/release/lib
tests
.gitignore
.travis.yml
Jakefile
Makefile
README.md
index.js
package.json
package.yaml

README.md

EventPipe

travis build info

An simple tool to code with event like a pipe.

Sequence

var ep = require('event-pipe');
ep(function(url){ // request an url
    request(url, this)
}, function(err, body){ // request done, write file
    if (err) {
        throw err;
    }
    var file = __dirname + '/google.html';
    fs.writeFile(file, body, this);
}, function(err){ // write file done
    if (err) {
        throw err;
    }
    console.log('done');
}).run('http://www.google.com/') // start pipe
var ep = require('event-pipe');
var p = ep();
p.seq(step1, step2, step3).seq(step4).run(args)

Parallel

var ep = require('event-pipe');
ep.on('drain', function(){
    console.log('all done');
})
ep([function(){
    fs.writeFile('a.file', 'somedata', this);
}, function(){
    fs.writeFile('b.file', 'somedata', this);
}, function(){
    fs.writeFile('c.file', 'somedata', this);
}]).run();
var ep = require('event-pipe');
var p = ep();
p.par(step1_action1, step1_action2, step1_action3).par(step2_action1, step2_action2).run(args)

Mixed

var ep = require('event-pipe');
ep(function(url){ // request an url
    request(url, this)
}, [ // request done, parallel write file
    function(err, body){ // file1
        if (err) {
            throw err;
        }
        var file = __dirname + '/google1.html';
        fs.writeFile(file, body, this);
    },
    function(err, body){ // file2
        if (err) {
            throw err;
        }
        var file = __dirname + '/google2.html';
        fs.writeFile(file, body, this);
    },
], function(err){ // write file done
    console.log('all done');
}).run('http://www.google.com/') // start pipe
var ep = require('event-pipe');
var p = ep();
p.add(step1, [step2_action1, step2_action2], step3).run(args)

Lazy mode

var ep = require('event-pipe');
var e = ep().on('error', function(err){
    console.error('got error:', err.stack);
}).lazy(function(url){ // request an url
    request(url, this)
}).lazy([
    function(body){ // file1
        var file = __dirname + '/google1.html';
        fs.writeFile(file, body, this);
    },
    function(body){ // file2
        var file = __dirname + '/google2.html';
        fs.writeFile(file, body, this);
    },
]).lazy(function(){ // write file done
    console.log('all done');
}).run('http://www.google.com/') // start pipe
var ep = require('event-pipe');
var p = ep();
p.lseq(step1, step2, step3).run(args)
p.lpar(step1, step2, step3).run(args)

stop

var ep = require('event-pipe');
var p = ep();
p.add(step1, step2, function(stop){ // step3, step4 will never be run
    if (stop) {
        this.__stop()
    }
},step3, stop4).seq(step4).run(args)
var ep = require('event-pipe');
var p = ep();
p.add(step1, step2, step3, stop4).seq(step4).run(args).stop() // step2, step3, step4 will never be run

Events

error

got error when use lazy mode.

stop

stop start.

stopped

pipe stopped.

drain

no more events.