UNPKG

1.31 kBJavaScriptView Raw
1// Generated by CoffeeScript 1.6.3
2var Emitter;
3
4module.exports = Emitter = (function() {
5 function Emitter() {
6 this._listeners = {};
7 }
8
9 Emitter.prototype.on = function(eventName, listener) {
10 if (this._listeners[eventName] == null) {
11 this._listeners[eventName] = [];
12 }
13 this._listeners[eventName].push(listener);
14 return this;
15 };
16
17 Emitter.prototype.once = function(eventName, listener) {
18 var cb, ran,
19 _this = this;
20 ran = false;
21 cb = function() {
22 if (ran) {
23 return;
24 }
25 ran = true;
26 listener();
27 return setTimeout(function() {
28 return _this.off(eventName, cb);
29 }, 0);
30 };
31 this.on(eventName, cb);
32 return this;
33 };
34
35 Emitter.prototype.off = function(eventName, listener) {
36 if (this._listeners[eventName] == null) {
37 return this;
38 }
39 this._listeners[eventName].splice(this._listeners[eventName].indexOf(listener), 1);
40 return this;
41 };
42
43 Emitter.prototype._emit = function(eventName, data) {
44 var listener, _i, _len, _ref;
45 if (this._listeners[eventName] == null) {
46 return;
47 }
48 _ref = this._listeners[eventName];
49 for (_i = 0, _len = _ref.length; _i < _len; _i++) {
50 listener = _ref[_i];
51 listener.call(this, data);
52 }
53 };
54
55 return Emitter;
56
57})();