class Dotpretty::StateMachine::StateMachineBuilder::StateDetailsBuilder

Attributes

entry_action[RW]
exit_action[RW]
name[RW]
transitions[RW]

Public Class Methods

build(name, &definition) click to toggle source
# 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
new(name) click to toggle source
# File lib/dotpretty/state_machine/state_machine_builder.rb, line 15
def initialize(name)
  self.name = name
  self.transitions = {}
end

Public Instance Methods

build() click to toggle source
# 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) click to toggle source
# File lib/dotpretty/state_machine/state_machine_builder.rb, line 35
def on_entry(action)
  self.entry_action = action
end
on_exit(action) click to toggle source
# 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) click to toggle source
# 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