Module: Listen::FSM::ClassMethods
- Defined in:
- lib/listen/fsm.rb
Instance Method Summary collapse
-
#start_state(new_start_state = nil) ⇒ Object
Obtain or set the start state Passing a state name sets the start state.
-
#state(state_name, to: nil, &block) ⇒ Object
Declare an FSM state and optionally provide a callback block to fire on state entry Options: * to: a state or array of states this state can transition to.
-
#states ⇒ Object
The valid states for this FSM, as a hash with state name symbols as keys and State objects as values.
Instance Method Details
#start_state(new_start_state = nil) ⇒ Object
Obtain or set the start state Passing a state name sets the start state
17 18 19 20 21 22 23 24 25 |
# File 'lib/listen/fsm.rb', line 17 def start_state(new_start_state = nil) if new_start_state new_start_state.is_a?(Symbol) or raise ArgumentError, "state name must be a Symbol (got #{new_start_state.inspect})" @start_state = new_start_state else defined?(@start_state) or raise ArgumentError, "`start_state :<state>` must be declared before `new`" @start_state end end |
#state(state_name, to: nil, &block) ⇒ Object
Declare an FSM state and optionally provide a callback block to fire on state entry Options:
-
to: a state or array of states this state can transition to
35 36 37 38 |
# File 'lib/listen/fsm.rb', line 35 def state(state_name, to: nil, &block) state_name.is_a?(Symbol) or raise ArgumentError, "state name must be a Symbol (got #{state_name.inspect})" states[state_name] = State.new(state_name, to, &block) end |
#states ⇒ Object
The valid states for this FSM, as a hash with state name symbols as keys and State objects as values.
28 29 30 |
# File 'lib/listen/fsm.rb', line 28 def states @states ||= {} end |