Class: ComposableStateMachine::Callbacks
- Inherits:
-
Object
- Object
- ComposableStateMachine::Callbacks
- Defined in:
- lib/composable_state_machine/callbacks.rb
Overview
Manages callbacks for a behavior.
Instance Method Summary collapse
-
#call(runner, trigger, *args) ⇒ self
Runs the callbacks for a trigger with a runner.
-
#initialize(callbacks = {}) ⇒ Callbacks
constructor
Creates a Callbacks object.
-
#on(trigger, proc = nil, &block) ⇒ self
Adds a callback for a trigger.
Constructor Details
#initialize(callbacks = {}) ⇒ Callbacks
Creates a ComposableStateMachine::Callbacks object.
8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/composable_state_machine/callbacks.rb', line 8 def initialize(callbacks = {}) @callbacks = Hash.new { |hash, key| hash[key] = [] } callbacks.each_pair do |trigger, proc| if proc.respond_to?(:each) proc.each do |callback| on(trigger, callback) end else on(trigger, proc) end end end |
Instance Method Details
#call(runner, trigger, *args) ⇒ self
Runs the callbacks for a trigger with a runner.
Runs the callbacks for the :any trigger for every trigger.
42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/composable_state_machine/callbacks.rb', line 42 def call(runner, trigger, *args) if trigger == :any raise InvalidTrigger.new(':any is not a valid trigger') end @callbacks[trigger].each do |callback| runner.run_state_machine_callback(callback, *args) end @callbacks[:any].each do |callback| runner.run_state_machine_callback(callback, *args) end self end |
#on(trigger, proc = nil, &block) ⇒ self
Adds a callback for a trigger.
28 29 30 31 |
# File 'lib/composable_state_machine/callbacks.rb', line 28 def on(trigger, proc = nil, &block) @callbacks[trigger] << (proc || block) self end |