Class: Event::Bus
- Inherits:
-
Object
- Object
- Event::Bus
- Defined in:
- lib/event/bus.rb,
lib/event/bus/version.rb
Overview
Bus
Constant Summary collapse
- VERSION =
'0.2.3'
Instance Method Summary collapse
-
#initialize(resolver) ⇒ Bus
constructor
Create Event::Bus.
-
#notify(event) ⇒ Object
Broadcast an event.
-
#register(event_ids, handler_object = nil) { ... } ⇒ Object
Register for an event.
Constructor Details
#initialize(resolver) ⇒ Bus
Create Event::Bus
15 16 17 18 |
# File 'lib/event/bus.rb', line 15 def initialize(resolver) @resolver = resolver @handlers = Hash.new { |h, k| h[k] = [] } end |
Instance Method Details
#notify(event) ⇒ Object
Broadcast an event
54 55 56 57 58 |
# File 'lib/event/bus.rb', line 54 def notify(event) fail NoEventError, 'Please pass an event object, not a class' if event.is_a?(Class) @handlers[event.class.to_s].each { |handler| handler.call(event) } end |
#register(event_ids, handler_object = nil) { ... } ⇒ Object
Register for an event
33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/event/bus.rb', line 33 def register(event_ids, handler_object = nil, &handler_proc) handler = handler_proc || handler_object fail ArgumentError, 'Please pass either an object#call or a handler block' if handler.nil? || !handler.respond_to?(:call) Array(event_ids).flatten.each do |id| event_class = @resolver.transform(id) fail EventNameResolveError, %(Transforming "#{id}" into an event name failed for unknown reason.) if event_class.nil? @handlers[event_class.to_s] << handler end nil end |