From de98e0b232509d5f40c135d540a70e415272ff85 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Wed, 3 May 2017 15:35:00 +0200 Subject: node_modules --- node_modules/htmlparser2/lib/CollectingHandler.js | 55 +++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 node_modules/htmlparser2/lib/CollectingHandler.js (limited to 'node_modules/htmlparser2/lib/CollectingHandler.js') diff --git a/node_modules/htmlparser2/lib/CollectingHandler.js b/node_modules/htmlparser2/lib/CollectingHandler.js new file mode 100644 index 000000000..8d63305ae --- /dev/null +++ b/node_modules/htmlparser2/lib/CollectingHandler.js @@ -0,0 +1,55 @@ +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]); + } + } + } +}; \ No newline at end of file -- cgit v1.2.3