diff options
Diffstat (limited to 'bin/wiki/ImportarDesdeURL/node_modules/htmlparser2/lib/CollectingHandler.js')
-rw-r--r-- | bin/wiki/ImportarDesdeURL/node_modules/htmlparser2/lib/CollectingHandler.js | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/bin/wiki/ImportarDesdeURL/node_modules/htmlparser2/lib/CollectingHandler.js b/bin/wiki/ImportarDesdeURL/node_modules/htmlparser2/lib/CollectingHandler.js new file mode 100644 index 00000000..24dbdab6 --- /dev/null +++ b/bin/wiki/ImportarDesdeURL/node_modules/htmlparser2/lib/CollectingHandler.js @@ -0,0 +1,57 @@ +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] + ); + } + } + } +}; |