class Jsm::States
Jsm::States
job is to collect all states
Attributes
list[R]
Public Class Methods
new()
click to toggle source
# File lib/jsm/states.rb, line 6 def initialize @list = [] end
Public Instance Methods
add_state(state_name, params = {})
click to toggle source
register new state into the list @param state_name @param params: allowed params is `initial`(boolean value, default is false)
# File lib/jsm/states.rb, line 13 def add_state(state_name, params = {}) initial = params.fetch(:initial) { false } if !state_unique?(state_name) raise Jsm::NotUniqueStateError, "state #{state_name} has been defined" end if initial && !initial_state.nil? raise Jsm::InvalidStateError,"can not set initial state to #{state_name}. current initial state is #{initial_state.name}" end state = create_state(state_name, initial) list.push(state) @initial_state = state if state.initial end
has_state?(state_name)
click to toggle source
# File lib/jsm/states.rb, line 33 def has_state?(state_name) list.any? { |state| state.name == state_name} end
initial_state()
click to toggle source
# File lib/jsm/states.rb, line 29 def initial_state @initial_state end
Private Instance Methods
create_state(state_name, initial)
click to toggle source
# File lib/jsm/states.rb, line 39 def create_state(state_name, initial) Jsm::State.new(state_name, initial) end
state_unique?(state_name)
click to toggle source
# File lib/jsm/states.rb, line 43 def state_unique?(state_name) list.all? {|state| state.name != state_name } end