module.exports = Stream; var Parser = require("./WritableStream.js"); function Stream(options) { Parser.call(this, new Cbs(this), options); } require("inherits")(Stream, Parser); Stream.prototype.readable = true; function Cbs(scope) { this.scope = scope; } var EVENTS = require("../").EVENTS; Object.keys(EVENTS).forEach(function(name) { if (EVENTS[name] === 0) { Cbs.prototype["on" + name] = function() { this.scope.emit(name); }; } else if (EVENTS[name] === 1) { Cbs.prototype["on" + name] = function(a) { this.scope.emit(name, a); }; } else if (EVENTS[name] === 2) { Cbs.prototype["on" + name] = function(a, b) { this.scope.emit(name, a, b); }; } else { throw Error("wrong number of arguments!"); } });