Module: EndState::StateMachineConfiguration

Included in:
StateMachine
Defined in:
lib/end_state/state_machine_configuration.rb

Instance Method Summary collapse

Instance Method Details

#end_statesObject


66
67
68
# File 'lib/end_state/state_machine_configuration.rb', line 66

def end_states
  transition_configurations.end_states
end

#eventsObject


54
55
56
# File 'lib/end_state/state_machine_configuration.rb', line 54

def events
  transition_configurations.events
end

#initial_stateObject


6
7
8
# File 'lib/end_state/state_machine_configuration.rb', line 6

def initial_state
  @initial_state
end

#modeObject


18
19
20
# File 'lib/end_state/state_machine_configuration.rb', line 18

def mode
  @mode
end

#set_initial_state(state) ⇒ Object


10
11
12
# File 'lib/end_state/state_machine_configuration.rb', line 10

def set_initial_state(state)
  @initial_state = state.to_sym
end

#start_statesObject


62
63
64
# File 'lib/end_state/state_machine_configuration.rb', line 62

def start_states
  transition_configurations.start_states
end

#state_attribute(attribute) ⇒ Object


49
50
51
52
# 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

#statesObject


58
59
60
# File 'lib/end_state/state_machine_configuration.rb', line 58

def states
  (start_states + end_states).uniq
end

#store_states_as_stringsObject


26
27
28
# File 'lib/end_state/state_machine_configuration.rb', line 26

def store_states_as_strings
  !!@store_states_as_strings
end

#store_states_as_strings!Object


22
23
24
# 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| ... } ⇒ Object

Yields:

  • (configuration)

30
31
32
33
34
35
36
37
38
39
40
41
42
43
# 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_configurationsObject


45
46
47
# File 'lib/end_state/state_machine_configuration.rb', line 45

def transition_configurations
  @transition_configurations ||= TransitionConfigurationSet.new
end

#treat_all_transitions_as_hard!Object


14
15
16
# File 'lib/end_state/state_machine_configuration.rb', line 14

def treat_all_transitions_as_hard!
  @mode = :hard
end