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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0acc21d9d8537e3f35b313333a293649a0c4aeb4
4
- data.tar.gz: ba114e08659603bda5d5d0b0be739d0f244be7a2
3
+ metadata.gz: 079dd5fa10807c0fc4c29e661ecd7affcaf6488e
4
+ data.tar.gz: 6a6e8dcbb44d22cc086f026c967208a142d421b9
5
5
  SHA512:
6
- metadata.gz: 939ddf5539f90fb5298bf4d741408e2a36cf5d6277fd9b30851b602487b1c349090bc84217ef22cba30a2b263f18c340e259b2937f918168814d8a3737f9eece
7
- data.tar.gz: 2da980710a514e0bb75f7befccb5f044017cb5e5d85a7a43eb65484bc1c2549ca9b16770bfbb9fa5ee1adee166f033b200ad26e08ce2f768ff5793fa01f177e5
6
+ metadata.gz: bb4250749d76973f58250e81d3b7c3140ffbdb7c364f755621415b96a00605bd24d84a72898c8c84bfe18f12ed15acef072c2a6a2f62036309daa0167e272f28
7
+ data.tar.gz: b437df70ce05bfbc08fff20ff89b0f56ed6a6d1b638e7d570b5588d405ace3316d495aa05592ffd6c84f942cb50acbacf1a705a0a32815e6bef1ef18913c7454
@@ -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
- def register(event_id, handler_object = nil, &handler_proc)
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
- event_class = @resolver.transform(event_id)
38
+ Array(event_ids).flatten.each do |id|
39
+ event_class = @resolver.transform(id)
23
40
 
24
- fail EventNameResolveError, %(Transforming "#{event_id}" into an event name failed for unknown reason.) if event_class.nil?
25
- @handlers[event_class.to_s] << handler
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
 
@@ -2,6 +2,6 @@
2
2
  module Event
3
3
  # Bus
4
4
  class Bus
5
- VERSION = '0.1.0'
5
+ VERSION = '0.2.0'
6
6
  end
7
7
  end
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.1.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-12 00:00:00.000000000 Z
11
+ date: 2015-11-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler