event-bus 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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