jsbus 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,3 @@
1
1
  module JsBus
2
- VERSION = "0.1.2"
2
+ VERSION = "0.1.3"
3
3
  end
@@ -7,9 +7,13 @@
7
7
  EventBus = (function() {
8
8
 
9
9
  function EventBus() {
10
- this.subscribers = [];
10
+ this.subscribers = {};
11
11
  }
12
12
 
13
+ EventBus.prototype.createEvent = function(eventType, data, callback) {
14
+ return new Event(eventType, data, callback);
15
+ };
16
+
13
17
  EventBus.prototype.publish = function(eventType, data, callback) {
14
18
  var eventTypes;
15
19
  eventTypes = [].concat(eventType);
@@ -21,7 +25,7 @@
21
25
  };
22
26
 
23
27
  EventBus.prototype.reset = function() {
24
- return this.subscribers = [];
28
+ return this.subscribers = {};
25
29
  };
26
30
 
27
31
  EventBus.prototype.subscribe = function(eventType, callback) {
@@ -31,24 +35,19 @@
31
35
  };
32
36
 
33
37
  EventBus.prototype.unsubscribe = function(eventType) {
34
- var eventTypes, subscriber, tmpSubscribers, _i, _j, _len, _len1, _ref, _results;
38
+ var eventTypes, subscriber, _i, _j, _len, _len1, _ref, _results;
35
39
  eventTypes = [].concat(eventType);
36
40
  _results = [];
37
41
  for (_i = 0, _len = eventTypes.length; _i < _len; _i++) {
38
42
  eventType = eventTypes[_i];
39
- tmpSubscribers = [];
40
- _ref = this.subscribers;
43
+ _ref = this.subscribers[eventType];
41
44
  for (_j = 0, _len1 = _ref.length; _j < _len1; _j++) {
42
45
  subscriber = _ref[_j];
43
- if (subscriber.eventType !== eventType) {
44
- tmpSubscribers.push(subscriber);
45
- } else {
46
- this.publish("EventBus.unsubscribed", {
47
- subscriber: subscriber
48
- });
49
- }
46
+ this.publish("EventBus.unsubscribed", {
47
+ subscriber: subscriber
48
+ });
50
49
  }
51
- _results.push(this.subscribers = tmpSubscribers);
50
+ _results.push(this.subscribers[eventType] = []);
52
51
  }
53
52
  return _results;
54
53
  };
@@ -63,6 +62,7 @@
63
62
  this.eventType = eventType;
64
63
  this.data = data != null ? data : {};
65
64
  this.callback = callback;
65
+ this.timestamp = Date.now().toString();
66
66
  }
67
67
 
68
68
  Event.prototype.push = function(subscriber) {
@@ -93,7 +93,7 @@
93
93
  _results = [];
94
94
  for (_i = 0, _len = eventTypes.length; _i < _len; _i++) {
95
95
  eventType = eventTypes[_i];
96
- event = new Event(eventType, eventData, callback);
96
+ event = eventBus.createEvent(eventType, eventData, callback);
97
97
  _results.push(pushEventToSubscribers(eventBus, event));
98
98
  }
99
99
  return _results;
@@ -104,25 +104,24 @@
104
104
  };
105
105
 
106
106
  pushEventToSubscribers = function(eventBus, event) {
107
- var subscriber, _i, _len, _ref, _results;
108
- _ref = eventBus.subscribers;
107
+ var subscriber, subscribers, _i, _len, _ref, _results;
108
+ subscribers = (_ref = eventBus.subscribers[event.eventType]) != null ? _ref : [];
109
109
  _results = [];
110
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
111
- subscriber = _ref[_i];
112
- if (subscriber.eventType === event.eventType) {
113
- _results.push(event.push(subscriber));
114
- }
110
+ for (_i = 0, _len = subscribers.length; _i < _len; _i++) {
111
+ subscriber = subscribers[_i];
112
+ _results.push(event.push(subscriber));
115
113
  }
116
114
  return _results;
117
115
  };
118
116
 
119
117
  subscribeToEventType = function(eventBus, eventTypes, callback) {
120
- var eventType, subscriber, _i, _len, _results;
118
+ var eventType, subscriber, _i, _len, _ref, _results;
121
119
  _results = [];
122
120
  for (_i = 0, _len = eventTypes.length; _i < _len; _i++) {
123
121
  eventType = eventTypes[_i];
124
122
  subscriber = new Subscriber(eventType, callback);
125
- eventBus.subscribers.push(subscriber);
123
+ eventBus.subscribers[eventType] = (_ref = eventBus.subscribers[eventType]) != null ? _ref : [];
124
+ eventBus.subscribers[eventType].push(subscriber);
126
125
  _results.push(eventBus.publish("EventBus.subscribed", {
127
126
  subscriber: subscriber
128
127
  }));
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jsbus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-02-07 00:00:00.000000000 Z
12
+ date: 2013-02-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: railties