| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 | module.exports = CollectingHandler;function CollectingHandler(cbs) {    this._cbs = cbs || {};    this.events = [];}var EVENTS = require("./").EVENTS;Object.keys(EVENTS).forEach(function(name) {    if (EVENTS[name] === 0) {        name = "on" + name;        CollectingHandler.prototype[name] = function() {            this.events.push([name]);            if (this._cbs[name]) this._cbs[name]();        };    } else if (EVENTS[name] === 1) {        name = "on" + name;        CollectingHandler.prototype[name] = function(a) {            this.events.push([name, a]);            if (this._cbs[name]) this._cbs[name](a);        };    } else if (EVENTS[name] === 2) {        name = "on" + name;        CollectingHandler.prototype[name] = function(a, b) {            this.events.push([name, a, b]);            if (this._cbs[name]) this._cbs[name](a, b);        };    } else {        throw Error("wrong number of arguments");    }});CollectingHandler.prototype.onreset = function() {    this.events = [];    if (this._cbs.onreset) this._cbs.onreset();};CollectingHandler.prototype.restart = function() {    if (this._cbs.onreset) this._cbs.onreset();    for (var i = 0, len = this.events.length; i < len; i++) {        if (this._cbs[this.events[i][0]]) {            var num = this.events[i].length;            if (num === 1) {                this._cbs[this.events[i][0]]();            } else if (num === 2) {                this._cbs[this.events[i][0]](this.events[i][1]);            } else {                this._cbs[this.events[i][0]](                    this.events[i][1],                    this.events[i][2]                );            }        }    }};
 |