class Statesman::EventTransitions

Attributes

event_name[R]
machine[R]

Public Class Methods

new(machine, event_name, &block) click to toggle source
# File lib/statesman/event_transitions.rb, line 5
def initialize(machine, event_name, &block)
  @machine    = machine
  @event_name = event_name
  instance_eval(&block)
end

Public Instance Methods

transition(from: nil, to: nil) click to toggle source
# File lib/statesman/event_transitions.rb, line 11
def transition(from: nil, to: nil)
  from = to_s_or_nil(from)
  to = array_to_s_or_nil(to)

  machine.transition(from: from, to: to)

  machine.events[event_name] ||= {}
  machine.events[event_name][from] ||= []
  machine.events[event_name][from] += to
end

Private Instance Methods

array_to_s_or_nil(input) click to toggle source
# File lib/statesman/event_transitions.rb, line 28
def array_to_s_or_nil(input)
  Array(input).map { |item| to_s_or_nil(item) }
end
to_s_or_nil(input) click to toggle source
# File lib/statesman/event_transitions.rb, line 24
def to_s_or_nil(input)
  input.nil? ? input : input.to_s
end