Class: Edrive::Dispatcher
- Inherits:
-
Object
- Object
- Edrive::Dispatcher
- Defined in:
- lib/edrive/dispatcher.rb
Overview
Simple Event Dispatcher
Direct Known Subclasses
Instance Method Summary collapse
-
#clear!(event) ⇒ Array
clear event handlers.
-
#clear_all! ⇒ Hash
clear all of event handlers.
-
#dispatch(event, *args) ⇒ Mixed
dispatch specific event handler.
-
#dispatch_with_data(event, data, *args) ⇒ Mixed
dispatch specific event handlers with data.
-
#handlers(event) ⇒ Array
get event handlers.
-
#initialize ⇒ Dispatcher
constructor
initialize.
-
#subscribe(event, handler = nil, &block) ⇒ Array
subscribe handler (proc, lambda, block).
Constructor Details
#initialize ⇒ Dispatcher
initialize
8 9 10 |
# File 'lib/edrive/dispatcher.rb', line 8 def initialize @events = {} end |
Instance Method Details
#clear!(event) ⇒ Array
clear event handlers
55 56 57 |
# File 'lib/edrive/dispatcher.rb', line 55 def clear!(event) @events[event] = [] end |
#clear_all! ⇒ Hash
clear all of event handlers
61 62 63 |
# File 'lib/edrive/dispatcher.rb', line 61 def clear_all! @events = {} end |
#dispatch(event, *args) ⇒ Mixed
dispatch specific event handler
28 29 30 31 32 |
# File 'lib/edrive/dispatcher.rb', line 28 def dispatch(event, *args) result = nil @events[event]&.each { |hdl| result = hdl.call(*args) } result end |
#dispatch_with_data(event, data, *args) ⇒ Mixed
dispatch specific event handlers with data
39 40 41 42 43 |
# File 'lib/edrive/dispatcher.rb', line 39 def dispatch_with_data(event, data, *args) result = data.dup @events[event]&.each { |hdl| result = hdl.call(result, *args) } result end |
#handlers(event) ⇒ Array
get event handlers
48 49 50 |
# File 'lib/edrive/dispatcher.rb', line 48 def handlers(event) @events[event] || [] end |
#subscribe(event, handler = nil, &block) ⇒ Array
subscribe handler (proc, lambda, block)
18 19 20 21 22 |
# File 'lib/edrive/dispatcher.rb', line 18 def subscribe(event, handler = nil, &block) hdl = block_given? ? block : handler raise ArgumentError, 'handler must be proc object.' unless hdl.is_a?(Proc) regist(event, hdl) end |