Array
A path represents a sequence of transitions that can be run for a particular object. Paths can walk to new transitions, revealing all of the possible branches that can be encountered in the object’s state machine.
Creates a new transition path for the given object. Initially this is an empty path. In order to start walking the path, it must be populated with an initial transition.
Configuration options:
:target - The target state to end the path on
:guard - Whether to guard transitions with the if/unless conditionals defined for each one
# File lib/state_machine/path.rb, line 22 def initialize(object, machine, options = {}) assert_valid_keys(options, :target, :guard) @object = object @machine = machine @target = options[:target] @guard = options[:guard] end
Determines whether or not this path has completed. A path is considered complete when one of the following conditions is met:
The last transition in the path ends on the target state
There are no more transitions remaining to walk and there is no target state
# File lib/state_machine/path.rb, line 85 def complete? !empty? && (@target ? to_name == @target : transitions.empty?) end
Lists all of the events that can be fired through this path.
For example,
path.events # => [:park, :ignite, :shift_up, ...]
# File lib/state_machine/path.rb, line 70 def events map {|transition| transition.event}.uniq end
The initial state name for this path
# File lib/state_machine/path.rb, line 37 def from_name first && first.from_name end
Lists all of the from states that can be reached through this path.
For example,
path.to_states # => [:parked, :idling, :first_gear, ...]
# File lib/state_machine/path.rb, line 46 def from_states map {|transition| transition.from_name}.uniq end
The end state name for this path. If a target state was specified for the path, then that will be returned if the path is complete.
# File lib/state_machine/path.rb, line 52 def to_name last && last.to_name end
Generated with the Darkfish Rdoc Generator 2.