jsbus 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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