Class: EndState::StateMachine
- Inherits:
-
SimpleDelegator
- Object
- SimpleDelegator
- EndState::StateMachine
- Extended by:
- StateMachineConfiguration
- Defined in:
- lib/end_state/state_machine.rb
Instance Attribute Summary collapse
-
#failure_messages ⇒ Object
Returns the value of attribute failure_messages.
-
#success_messages ⇒ Object
Returns the value of attribute success_messages.
Instance Method Summary collapse
- #can_transition?(end_state, params = {}) ⇒ Boolean
-
#initialize(object) ⇒ StateMachine
constructor
A new instance of StateMachine.
- #method_missing(method, *args, &block) ⇒ Object
- #object ⇒ Object
- #transition(end_state, params = {}, mode = self.class.mode) ⇒ Object
- #transition!(end_state, params = {}) ⇒ Object
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
permalink #initialize(object) ⇒ StateMachine
Returns a new instance of StateMachine.
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
permalink #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
permalink #failure_messages ⇒ Object
Returns the value of attribute failure_messages.
5 6 7 |
# File 'lib/end_state/state_machine.rb', line 5 def end |
permalink #success_messages ⇒ Object
Returns the value of attribute success_messages.
5 6 7 |
# File 'lib/end_state/state_machine.rb', line 5 def end |
Instance Method Details
permalink #can_transition?(end_state, params = {}) ⇒ Boolean
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 |
permalink #object ⇒ Object
[View source]
12 13 14 |
# File 'lib/end_state/state_machine.rb', line 12 def object __getobj__ end |
permalink #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) 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 |
permalink #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 |