|
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]
- );
- }
- }
- }
- };
|