class StrictMachine::State

Attributes

name[R]
on_entry[R]
transition_definitions[R]

Public Class Methods

new(name) click to toggle source
# File lib/strict_machine/definition/state.rb, line 7
def initialize(name)
  @name = name.to_sym
  @transition_definitions = []
  @on_entry = []
end

Public Instance Methods

add_on_entry(proc) click to toggle source
# File lib/strict_machine/definition/state.rb, line 31
def add_on_entry(proc)
  @on_entry << proc
end
add_transition(transition_definition) click to toggle source
# File lib/strict_machine/definition/state.rb, line 13
def add_transition(transition_definition)
  @transition_definitions << TransitionDefinition.new(
    transition_definition
  )
end
get_transition(name) click to toggle source
# File lib/strict_machine/definition/state.rb, line 19
def get_transition(name)
  name = name.to_s
  is_bang = name.end_with?("!")
  name = name[0..-2] if is_bang

  @transition_definitions.each do |this_transition|
    return is_bang, this_transition if this_transition.name == name.to_sym
  end

  raise TransitionNotFoundError, name
end
run_on_entries(instance, current_state_name, trigger) click to toggle source
# File lib/strict_machine/definition/state.rb, line 35
def run_on_entries(instance, current_state_name, trigger)
  @on_entry.each do |proc|
    instance.instance_exec(current_state_name, trigger, &proc)
  end
end