Sha256: 628670a62af49e860558a63bff1491ad9f73baafcb49cecf0882587f557fe464
Contents?: true
Size: 928 Bytes
Versions: 1
Compression:
Stored size: 928 Bytes
Contents
module FSM # # A State has a name and a list of outgoing transitions. # class State attr_reader(:name, :transitions) # name: a symbol which identifies this state # options # * :enter : a symbol or string or Proc # * :exit : a symbol or string or Proc def initialize(name, options = {}) @name = name @enter = Executable.new options[:enter] @exit = Executable.new options[:exit] @transitions = {} end # Called when this state is entered def enter(target) @enter.execute(target, nil) end # Called when this state is exited def exit(target) @exit.execute(target, nil) end # All states that are reachable form this state by one hop def to_states self.transitions.map { |to_name, transition| transition.to} end def to_s "State '#{self.name}' (#{self.object_id})" end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
simplificator-fsm-0.1.0 | lib/fsm/state.rb |