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