utila
Version:
notareplacementforunderscore
58 lines (50 loc) • 1.31 kB
JavaScript
// Generated by CoffeeScript 1.6.3
var Emitter;
module.exports = Emitter = (function() {
function Emitter() {
this._listeners = {};
}
Emitter.prototype.on = function(eventName, listener) {
if (this._listeners[eventName] == null) {
this._listeners[eventName] = [];
}
this._listeners[eventName].push(listener);
return this;
};
Emitter.prototype.once = function(eventName, listener) {
var cb, ran,
_this = this;
ran = false;
cb = function() {
if (ran) {
return;
}
ran = true;
listener();
return setTimeout(function() {
return _this.off(eventName, cb);
}, 0);
};
this.on(eventName, cb);
return this;
};
Emitter.prototype.off = function(eventName, listener) {
if (this._listeners[eventName] == null) {
return this;
}
this._listeners[eventName].splice(this._listeners[eventName].indexOf(listener), 1);
return this;
};
Emitter.prototype._emit = function(eventName, data) {
var listener, _i, _len, _ref;
if (this._listeners[eventName] == null) {
return;
}
_ref = this._listeners[eventName];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
listener = _ref[_i];
listener.call(this, data);
}
};
return Emitter;
})();