module EndState::StateMachineConfiguration

Public Instance Methods

end_states() click to toggle source
# File lib/end_state/state_machine_configuration.rb, line 66
def end_states
  transition_configurations.end_states
end
events() click to toggle source
# File lib/end_state/state_machine_configuration.rb, line 54
def events
  transition_configurations.events
end
initial_state() click to toggle source
# File lib/end_state/state_machine_configuration.rb, line 6
def initial_state
  @initial_state
end
mode() click to toggle source
# File lib/end_state/state_machine_configuration.rb, line 18
def mode
  @mode
end
set_initial_state(state) click to toggle source
# File lib/end_state/state_machine_configuration.rb, line 10
def set_initial_state(state)
  @initial_state = state.to_sym
end
start_states() click to toggle source
# File lib/end_state/state_machine_configuration.rb, line 62
def start_states
  transition_configurations.start_states
end
state_attribute(attribute) click to toggle source
# File lib/end_state/state_machine_configuration.rb, line 49
def state_attribute(attribute)
  define_method(:state) { send(attribute.to_sym) }
  define_method(:state=) { |val| send("#{attribute}=".to_sym, val) }
end
states() click to toggle source
# File lib/end_state/state_machine_configuration.rb, line 58
def states
  (start_states + end_states).uniq
end
store_states_as_strings() click to toggle source
# File lib/end_state/state_machine_configuration.rb, line 26
def store_states_as_strings
  !!@store_states_as_strings
end
store_states_as_strings!() click to toggle source
# File lib/end_state/state_machine_configuration.rb, line 22
def store_states_as_strings!
  @store_states_as_strings = true
end
transition(state_map) { |configuration| ... } click to toggle source
# File lib/end_state/state_machine_configuration.rb, line 30
def transition(state_map)
  event = state_map.delete(:as)
  event = event.to_sym unless event.nil?

  configuration = TransitionConfiguration.new
  yield configuration if block_given?

  state_map.each do |start_states, end_state|
    Array(start_states).each do |start_state|
      prevent_event_conflicts(start_state, event)
      transition_configurations.add(start_state, end_state, configuration, event)
    end
  end
end
transition_configurations() click to toggle source
# File lib/end_state/state_machine_configuration.rb, line 45
def transition_configurations
  @transition_configurations ||= TransitionConfigurationSet.new
end
treat_all_transitions_as_hard!() click to toggle source
# File lib/end_state/state_machine_configuration.rb, line 14
def treat_all_transitions_as_hard!
  @mode = :hard
end

Private Instance Methods

prevent_event_conflicts(start_state, event) click to toggle source
# File lib/end_state/state_machine_configuration.rb, line 72
def prevent_event_conflicts(start_state, event)
  return unless transition_configurations.event_conflicts?(start_state, event)
  Kernel.fail EventConflict, "Attempting to define event '#{event}' on state '#{start_state}', but it is already defined. (Check duplicates and use of 'any_state')"
end