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
on(event)
Alias for: event

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