class Stateful::State
Attributes
name[RW]
transitions[RW]
Public Class Methods
new(name, options = {})
click to toggle source
# File lib/Stateful/State.rb, line 13 def initialize(name, options = {}) @name = name @options = options @transitions = [] end
Public Instance Methods
event(event)
click to toggle source
# File lib/Stateful/State.rb, line 19 def event(event) event_name, new_state = event.keys.first, event.values.first transitions << Transition.new(event_name, new_state) transitions.shuffle if non_deterministic_event_ordering? transitions end
Also aliased as: on
next_state_name(event_name)
click to toggle source
# File lib/Stateful/State.rb, line 27 def next_state_name(event_name) if matching_transition = transitions.detect{|transition| transition.event_name == event_name} matching_transition.next_state_name end end
Private Instance Methods
non_deterministic_event_ordering?()
click to toggle source
# File lib/Stateful/State.rb, line 35 def non_deterministic_event_ordering? @options[:non_deterministic_event_ordering] || @options[:non_deterministic] || (@options[:deterministic] && !@options[:deterministic]) end