Module: Stateful::ClassMethods
- Defined in:
- lib/Stateful/ClassMethods.rb
Instance Method Summary collapse
- #final_state(*state_names) ⇒ Object
-
#final_state? ⇒ Boolean
(also: #has_final_state?)
predicate methods.
- #final_states(*state_names) ⇒ Object
- #initial_state(state_name = nil, options = {}, &block) ⇒ Object
- #state(state_name, options = {}, &block) ⇒ Object
- #state_machine(name, options = {}, &block) ⇒ Object
- #state_machines ⇒ Object
-
#stateful(options = {}, &block) ⇒ Object
start DSL.
- #stateful_state_machine(machine_name = nil) ⇒ Object
Instance Method Details
#final_state(*state_names) ⇒ Object
44 45 46 |
# File 'lib/Stateful/ClassMethods.rb', line 44 def final_state(*state_names) stateful_state_machine.final_state(*state_names) end |
#final_state? ⇒ Boolean Also known as: has_final_state?
predicate methods
56 57 58 59 60 61 62 |
# File 'lib/Stateful/ClassMethods.rb', line 56 def final_state? if state_machines.empty? !final_states.empty? else state_machines.all?{|_name, states| !states.final_states.empty?} end end |
#final_states(*state_names) ⇒ Object
48 49 50 |
# File 'lib/Stateful/ClassMethods.rb', line 48 def final_states(*state_names) stateful_state_machine.final_states(*state_names) end |
#initial_state(state_name = nil, options = {}, &block) ⇒ Object
36 37 38 |
# File 'lib/Stateful/ClassMethods.rb', line 36 def initial_state(state_name = nil, = {}, &block) stateful_state_machine.initial_state(state_name, , &block) end |
#state(state_name, options = {}, &block) ⇒ Object
40 41 42 |
# File 'lib/Stateful/ClassMethods.rb', line 40 def state(state_name, = {}, &block) stateful_state_machine.state(state_name, , &block) end |
#state_machine(name, options = {}, &block) ⇒ Object
27 28 29 30 31 32 33 34 |
# File 'lib/Stateful/ClassMethods.rb', line 27 def state_machine(name, = {}, &block) unless state_machines.key?(name) define_named_machine_methods(name) end sm = stateful_state_machine(name) sm. = unless .empty? sm.instance_eval(&block) if block end |
#state_machines ⇒ Object
8 9 10 |
# File 'lib/Stateful/ClassMethods.rb', line 8 def state_machines @state_machines ||= {} end |
#stateful(options = {}, &block) ⇒ Object
start DSL
22 23 24 25 |
# File 'lib/Stateful/ClassMethods.rb', line 22 def stateful( = {}, &block) stateful_state_machine. = unless .empty? class_eval(&block) if block end |
#stateful_state_machine(machine_name = nil) ⇒ Object
12 13 14 15 16 17 18 |
# File 'lib/Stateful/ClassMethods.rb', line 12 def stateful_state_machine(machine_name = nil) if machine_name state_machines[machine_name] ||= Stateful::StateMachine.new(self, machine_name: machine_name) else @stateful_state_machine ||= Stateful::StateMachine.new(self) end end |