Class: Dotpretty::StateMachine::StateMachineBuilder::StateDetailsBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/dotpretty/state_machine/state_machine_builder.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name) ⇒ StateDetailsBuilder

Returns a new instance of StateDetailsBuilder.



15
16
17
18
# File 'lib/dotpretty/state_machine/state_machine_builder.rb', line 15

def initialize(name)
  self.name = name
  self.transitions = {}
end

Class Method Details

.build(name, &definition) ⇒ Object



9
10
11
12
13
# File 'lib/dotpretty/state_machine/state_machine_builder.rb', line 9

def self.build(name, &definition)
  builder = StateDetailsBuilder.new(name)
  builder.instance_eval(&definition)
  return builder.build
end

Instance Method Details

#buildObject



20
21
22
23
24
25
26
# File 'lib/dotpretty/state_machine/state_machine_builder.rb', line 20

def build
  StateDetails.new({
    entry_action: entry_action,
    exit_action: exit_action,
    transitions: transitions
  })
end

#on_entry(action) ⇒ Object



35
36
37
# File 'lib/dotpretty/state_machine/state_machine_builder.rb', line 35

def on_entry(action)
  self.entry_action = action
end

#on_exit(action) ⇒ Object



39
40
41
# File 'lib/dotpretty/state_machine/state_machine_builder.rb', line 39

def on_exit(action)
  self.exit_action = action
end

#transition(event, next_state_name, action = nil) ⇒ Object



28
29
30
31
32
33
# File 'lib/dotpretty/state_machine/state_machine_builder.rb', line 28

def transition(event, next_state_name, action = nil)
  transitions[event] = {
    action: action,
    next_state_name: next_state_name
  }
end