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