event-bus 0.1.0 → 0.2.0
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.
- checksums.yaml +4 -4
- data/lib/event/bus.rb +27 -4
- data/lib/event/bus/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 079dd5fa10807c0fc4c29e661ecd7affcaf6488e
|
4
|
+
data.tar.gz: 6a6e8dcbb44d22cc086f026c967208a142d421b9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bb4250749d76973f58250e81d3b7c3140ffbdb7c364f755621415b96a00605bd24d84a72898c8c84bfe18f12ed15acef072c2a6a2f62036309daa0167e272f28
|
7
|
+
data.tar.gz: b437df70ce05bfbc08fff20ff89b0f56ed6a6d1b638e7d570b5588d405ace3316d495aa05592ffd6c84f942cb50acbacf1a705a0a32815e6bef1ef18913c7454
|
data/lib/event/bus.rb
CHANGED
@@ -8,26 +8,49 @@ module Event
|
|
8
8
|
# to subscribe to different events that fire as your tests are executed.
|
9
9
|
#
|
10
10
|
class Bus
|
11
|
+
# Create Event::Bus
|
12
|
+
#
|
13
|
+
# @param [#transform] resolver
|
14
|
+
# A resolver which transforms Symbol, String, Class into an event Class.
|
11
15
|
def initialize(resolver)
|
12
16
|
@resolver = resolver
|
13
17
|
@handlers = Hash.new { |h, k| h[k] = [] }
|
14
18
|
end
|
15
19
|
|
16
20
|
# Register for an event
|
17
|
-
|
21
|
+
#
|
22
|
+
# @param [String, Symbol, Class, Array] event_ids
|
23
|
+
# If Array, register multiple events witht the same handler. If String,
|
24
|
+
# Symbol, Class register handler for given event.
|
25
|
+
#
|
26
|
+
# @param [#call] handler_object
|
27
|
+
# The handler object, needs to have method `#call`. Either
|
28
|
+
# `handler_object` or `block` can be defined. The handler object gets the
|
29
|
+
# event passed to `#call`.
|
30
|
+
#
|
31
|
+
# @yield
|
32
|
+
# Handler block which gets the event passed as parameter.
|
33
|
+
def register(event_ids, handler_object = nil, &handler_proc)
|
18
34
|
handler = handler_proc || handler_object
|
19
35
|
|
20
36
|
fail ArgumentError, 'Please pass either an object#call or a handler block' if handler.nil? || !handler.respond_to?(:call)
|
21
37
|
|
22
|
-
|
38
|
+
Array(event_ids).flatten.each do |id|
|
39
|
+
event_class = @resolver.transform(id)
|
23
40
|
|
24
|
-
|
25
|
-
|
41
|
+
fail EventNameResolveError, %(Transforming "#{id}" into an event name failed for unknown reason.) if event_class.nil?
|
42
|
+
@handlers[event_class.to_s] << handler
|
43
|
+
end
|
26
44
|
|
27
45
|
nil
|
28
46
|
end
|
29
47
|
|
30
48
|
# Broadcast an event
|
49
|
+
#
|
50
|
+
# @param [Object] event
|
51
|
+
# An object of registered event class. This object is passed to the event
|
52
|
+
# handler.
|
53
|
+
#
|
31
54
|
def notify(event)
|
32
55
|
fail NoEventError, 'Please pass an event object, not a class' if event.is_a?(Class)
|
33
56
|
|
data/lib/event/bus/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: event-bus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dennis Günnewig
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-11-
|
11
|
+
date: 2015-11-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|