class FiniteMachine::ChoiceMerger

A class responsible for merging choice options

Public Class Methods

new(machine, name, transitions = {}) click to toggle source

Initialize a ChoiceMerger

@param [StateMachine] machine @param [String] name @param [Hash] transitions

the transitions and attributes

@api private

# File lib/finite_machine/choice_merger.rb, line 16
def initialize(machine, name, transitions = {})
  @machine     = machine
  @name        = name
  @transitions = transitions
end

Public Instance Methods

choice(to, conditions = {}) click to toggle source

Create choice transition

@example

event :stop, from: :green do
  choice :yellow
end

@param [Symbol] to

the to state

@param [Hash] conditions

the conditions associated with this choice

@return [FiniteMachine::Transition]

@api public

# File lib/finite_machine/choice_merger.rb, line 37
def choice(to, conditions = {})
  transition_builder = TransitionBuilder.new(@machine, @name,
                                             @transitions.merge(conditions))
  transition_builder.call(@transitions[:from] => to)
end
Also aliased as: default
default(to, conditions = {})
Alias for: choice