jsbus 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,3 @@
1
- require_relative './jsbus/engine'
2
- require_relative './jsbus/railtie'
1
+ require_relative './jsbus/engine'
2
+ require_relative './jsbus/railtie'
3
3
  require_relative './jsbus/version'
@@ -1,6 +1,6 @@
1
- require 'rails/engine'
2
-
3
- module JsBus
4
- class Engine < ::Rails::Engine
5
- end
1
+ require 'rails/engine'
2
+
3
+ module JsBus
4
+ class Engine < ::Rails::Engine
5
+ end
6
6
  end
@@ -1,4 +1,4 @@
1
- module JsBus
2
- class Railtie < ::Rails::Railtie
3
- end
1
+ module JsBus
2
+ class Railtie < ::Rails::Railtie
3
+ end
4
4
  end
@@ -1,3 +1,3 @@
1
- module JsBus
2
- VERSION = "0.1.1"
3
- end
1
+ module JsBus
2
+ VERSION = "0.1.2"
3
+ end
@@ -1,130 +1,137 @@
1
- (function (window) {
2
- "use strict";
3
-
4
- function isFunction(obj) {
5
- return !!(obj && obj.constructor && obj.call && obj.apply);
6
- }
7
-
8
- function log(message) {
9
- if (window && window.eventBus && window.eventBus.debug && window.console && window.console.log) {
10
- window.console.log(message);
11
- }
12
- }
13
-
14
- var EventBus = function () {
15
- var self = this;
16
-
17
- // If true, logging to console is enabled.
18
- self.debug = false;
19
-
20
- // Array of subscribers.
21
- self.subscribers = [];
22
-
23
- // Publish an event to the event bus.
24
- // eventType: string or string array
25
- // data: data associated with the event
26
- // callback: fired at the completion of the event
27
- self.publish = function (eventType, data, callback) {
28
- var eventTypes = [].concat(eventType);
29
- if (isFunction(data)) {
30
- log("Given callback but no data. Assigning data to callback.");
31
- callback = data;
32
- data = {};
33
- }
34
- createAndPublishEvent(eventTypes, data, callback);
35
- };
36
-
37
- // Reset the event bus by removing all subscribers. This is useful
38
- // (and necessary) in testing scenarios.
39
- self.reset = function() {
40
- self.debug = false;
41
- self.subscribers = [];
42
- };
43
-
44
- // Subscribe to one or more events. If eventType is an array, the given callback
45
- // will be bound to multiple events.
46
- self.subscribe = function(eventType, callback) {
47
- var eventTypes = [].concat(eventType);
48
- subscribeToEventTypes(eventTypes, callback);
49
- };
50
-
51
- self.unsubscribe = function(eventType) {
52
- var eventTypes = [].concat(eventType), i, j, tmpSubscribers, subscriber;
53
- for (i = eventTypes.length - 1; i >= 0; i--) {
54
- eventType = eventTypes[i];
55
- tmpSubscribers = [];
56
- for (j = self.subscribers.length - 1; j >= 0; j--) {
57
- subscriber = self.subscribers[j];
58
- if (subscriber.eventType !== eventType) {
59
- tmpSubscribers.push(subscriber);
60
- }
61
- }
62
- self.subscribers = tmpSubscribers;
63
- }
64
- };
65
-
66
- function createAndPublishEvent(eventTypes, data, callback) {
67
- var i, eventType, event;
68
- for (i = eventTypes.length - 1; i >= 0; i--) {
69
- eventType = eventTypes[i];
70
- event = new Event(eventType, data);
71
- log("Publishing event: " + event.toString());
72
- pushEventToSubscribers(event, eventType, callback);
73
- }
74
- }
75
-
76
- function pushEventToSubscribers(event, eventType, callback) {
77
- var i, subscriber;
78
- for (i = self.subscribers.length - 1; i >= 0; i--) {
79
- subscriber = self.subscribers[i];
80
- if (subscriber.eventType === eventType) {
81
- event.push(subscriber, callback);
82
- }
83
- }
84
- }
85
-
86
- function subscribeToEventTypes(eventTypes, callback) {
87
- var i, eventType, subscriber;
88
- for (i = eventTypes.length - 1; i >= 0; i--) {
89
- eventType = eventTypes[i];
90
- subscriber = new Subscriber(eventType, callback);
91
- self.subscribers.push(subscriber);
92
- }
93
- }
94
- }; // Closes EventBus definition
95
-
96
- // Subscriber object. A holder for an event type and a callback.
97
- var Subscriber = function(eventType, callback) {
98
- var self = this;
99
- self.eventType = eventType;
100
- self.callback = callback;
101
- };
102
-
103
- // Event object.
104
- var Event = function(eventType, data) {
105
- var self = this;
106
- self.eventType = eventType;
107
- self.data = data || {};
108
-
109
- // Push the event to the given subscriber.
110
- self.push = function(subscriber, callback) {
111
- // Invoke the subscriber's callback function. Save the response, if any.
112
- var response = subscriber.callback(self) || { };
113
-
114
- // If the publisher has a callback, invoke, passing the subscriber's response.
115
- if (callback && isFunction(callback)) {
116
- callback(response);
117
- }
118
- };
119
-
120
- self.toString = function() {
121
- return "Event Type: " + self.eventType;
122
- };
123
- };
124
-
125
- // Do not define an eventBus is one has already been created.
126
- if (window && window.eventBus) {
127
- return;
128
- }
129
- window.eventBus = new EventBus();
130
- }(window));
1
+ // Generated by CoffeeScript 1.4.0
2
+ (function() {
3
+ var Event, EventBus, Subscriber, createAndPublishEvent, isFunction, pushEventToSubscribers, root, subscribeToEventType;
4
+
5
+ root = typeof exports !== "undefined" && exports !== null ? exports : this;
6
+
7
+ EventBus = (function() {
8
+
9
+ function EventBus() {
10
+ this.subscribers = [];
11
+ }
12
+
13
+ EventBus.prototype.publish = function(eventType, data, callback) {
14
+ var eventTypes;
15
+ eventTypes = [].concat(eventType);
16
+ if (isFunction(data)) {
17
+ callback = data;
18
+ data = {};
19
+ }
20
+ return createAndPublishEvent(this, eventTypes, data, callback);
21
+ };
22
+
23
+ EventBus.prototype.reset = function() {
24
+ return this.subscribers = [];
25
+ };
26
+
27
+ EventBus.prototype.subscribe = function(eventType, callback) {
28
+ var eventTypes;
29
+ eventTypes = [].concat(eventType);
30
+ return subscribeToEventType(this, eventTypes, callback);
31
+ };
32
+
33
+ EventBus.prototype.unsubscribe = function(eventType) {
34
+ var eventTypes, subscriber, tmpSubscribers, _i, _j, _len, _len1, _ref, _results;
35
+ eventTypes = [].concat(eventType);
36
+ _results = [];
37
+ for (_i = 0, _len = eventTypes.length; _i < _len; _i++) {
38
+ eventType = eventTypes[_i];
39
+ tmpSubscribers = [];
40
+ _ref = this.subscribers;
41
+ for (_j = 0, _len1 = _ref.length; _j < _len1; _j++) {
42
+ subscriber = _ref[_j];
43
+ if (subscriber.eventType !== eventType) {
44
+ tmpSubscribers.push(subscriber);
45
+ } else {
46
+ this.publish("EventBus.unsubscribed", {
47
+ subscriber: subscriber
48
+ });
49
+ }
50
+ }
51
+ _results.push(this.subscribers = tmpSubscribers);
52
+ }
53
+ return _results;
54
+ };
55
+
56
+ return EventBus;
57
+
58
+ })();
59
+
60
+ Event = (function() {
61
+
62
+ function Event(eventType, data, callback) {
63
+ this.eventType = eventType;
64
+ this.data = data != null ? data : {};
65
+ this.callback = callback;
66
+ }
67
+
68
+ Event.prototype.push = function(subscriber) {
69
+ var response, _ref;
70
+ response = (_ref = subscriber.callback(this)) != null ? _ref : {};
71
+ if (isFunction(this.callback)) {
72
+ return this.callback(response);
73
+ }
74
+ };
75
+
76
+ return Event;
77
+
78
+ })();
79
+
80
+ Subscriber = (function() {
81
+
82
+ function Subscriber(eventType, callback) {
83
+ this.eventType = eventType;
84
+ this.callback = callback;
85
+ }
86
+
87
+ return Subscriber;
88
+
89
+ })();
90
+
91
+ createAndPublishEvent = function(eventBus, eventTypes, eventData, callback) {
92
+ var event, eventType, _i, _len, _results;
93
+ _results = [];
94
+ for (_i = 0, _len = eventTypes.length; _i < _len; _i++) {
95
+ eventType = eventTypes[_i];
96
+ event = new Event(eventType, eventData, callback);
97
+ _results.push(pushEventToSubscribers(eventBus, event));
98
+ }
99
+ return _results;
100
+ };
101
+
102
+ isFunction = function(obj) {
103
+ return !!(obj && obj.constructor && obj.call && obj.apply);
104
+ };
105
+
106
+ pushEventToSubscribers = function(eventBus, event) {
107
+ var subscriber, _i, _len, _ref, _results;
108
+ _ref = eventBus.subscribers;
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
+ }
115
+ }
116
+ return _results;
117
+ };
118
+
119
+ subscribeToEventType = function(eventBus, eventTypes, callback) {
120
+ var eventType, subscriber, _i, _len, _results;
121
+ _results = [];
122
+ for (_i = 0, _len = eventTypes.length; _i < _len; _i++) {
123
+ eventType = eventTypes[_i];
124
+ subscriber = new Subscriber(eventType, callback);
125
+ eventBus.subscribers.push(subscriber);
126
+ _results.push(eventBus.publish("EventBus.subscribed", {
127
+ subscriber: subscriber
128
+ }));
129
+ }
130
+ return _results;
131
+ };
132
+
133
+ if (!root.eventBus) {
134
+ root.eventBus = new EventBus();
135
+ }
136
+
137
+ }).call(this);
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.1
4
+ version: 0.1.2
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-06 00:00:00.000000000 Z
12
+ date: 2013-02-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: railties
@@ -59,7 +59,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
59
59
  version: '0'
60
60
  requirements: []
61
61
  rubyforge_project:
62
- rubygems_version: 1.8.25
62
+ rubygems_version: 1.8.23
63
63
  signing_key:
64
64
  specification_version: 3
65
65
  summary: Event bus for JavaScript