Class: Philiprehberger::StateMachine::TransitionBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/philiprehberger/state_machine/transition.rb

Overview

Collects transitions for a single event via the DSL.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeTransitionBuilder

Returns a new instance of TransitionBuilder.



35
36
37
38
# File 'lib/philiprehberger/state_machine/transition.rb', line 35

def initialize
  @transitions = []
  @parallel_definitions = {}
end

Instance Attribute Details

#parallel_definitionsObject (readonly)

Returns the value of attribute parallel_definitions.



33
34
35
# File 'lib/philiprehberger/state_machine/transition.rb', line 33

def parallel_definitions
  @parallel_definitions
end

#transitionsObject (readonly)

Returns the value of attribute transitions.



33
34
35
# File 'lib/philiprehberger/state_machine/transition.rb', line 33

def transitions
  @transitions
end

Instance Method Details

#parallel_states(*states) ⇒ Object

Define parallel substates activated during this transition.

Parameters:

  • states (Array<Symbol>)

    substates to activate concurrently



52
53
54
55
# File 'lib/philiprehberger/state_machine/transition.rb', line 52

def parallel_states(*states)
  key = @transitions.last&.to || :_default
  @parallel_definitions[key] = states.flatten
end

#transition(from:, to:, guard: nil) ⇒ Object

Define a transition within an event block.

Parameters:

  • from (Symbol, Array<Symbol>)

    source state(s)

  • to (Symbol)

    target state

  • guard (Proc, nil) (defaults to: nil)

    optional guard lambda



45
46
47
# File 'lib/philiprehberger/state_machine/transition.rb', line 45

def transition(from:, to:, guard: nil)
  @transitions << Transition.new(from: from, to: to, guard: guard)
end