Class: EndState::StateMachine

Inherits:
SimpleDelegator
  • Object
show all
Extended by:
StateMachineConfiguration
Defined in:
lib/end_state/state_machine.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from StateMachineConfiguration

end_states, events, initial_state, mode, set_initial_state, start_states, state_attribute, states, store_states_as_strings, store_states_as_strings!, transition_configurations, treat_all_transitions_as_hard!

Constructor Details

#initialize(object) ⇒ StateMachine

Returns a new instance of StateMachine.

[View source]

7
8
9
10
# File 'lib/end_state/state_machine.rb', line 7

def initialize(object)
  super
  Action.new(self, self.class.initial_state).call if state.nil?
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *args, &block) ⇒ Object

[View source]

31
32
33
34
35
# File 'lib/end_state/state_machine.rb', line 31

def method_missing(method, *args, &block)
  return super unless __sm_is_method?(method)
  return __sm_predicate(method) if __sm_is_state_predicate?(method)
  __sm_event_transition __sm_event(method), args[0] || {}, __sm_event_mode(method)
end

Instance Attribute Details

#failure_messagesObject

Returns the value of attribute failure_messages.


5
6
7
# File 'lib/end_state/state_machine.rb', line 5

def failure_messages
  @failure_messages
end

#success_messagesObject

Returns the value of attribute success_messages.


5
6
7
# File 'lib/end_state/state_machine.rb', line 5

def success_messages
  @success_messages
end

Instance Method Details

#can_transition?(end_state, params = {}) ⇒ Boolean

Returns:

  • (Boolean)
[View source]

16
17
18
19
# File 'lib/end_state/state_machine.rb', line 16

def can_transition?(end_state, params = {})
  return false unless __sm_transition_configuration_for(state.to_sym, end_state.to_sym)
  __sm_transition_for(end_state.to_sym).will_allow?(params)
end

#objectObject

[View source]

12
13
14
# File 'lib/end_state/state_machine.rb', line 12

def object
  __getobj__
end

#transition(end_state, params = {}, mode = self.class.mode) ⇒ Object

[View source]

21
22
23
24
25
# File 'lib/end_state/state_machine.rb', line 21

def transition(end_state, params = {}, mode = self.class.mode)
  __sm_reset_messages
  return __sm_block_transistion(end_state.to_sym, mode) unless __sm_transition_configuration_for(state.to_sym, end_state.to_sym)
  __sm_transition_for(end_state.to_sym, mode).call(params)
end

#transition!(end_state, params = {}) ⇒ Object

[View source]

27
28
29
# File 'lib/end_state/state_machine.rb', line 27

def transition!(end_state, params = {})
  transition end_state.to_sym, params, :hard
end