Module: Stateful::ClassMethods

Defined in:
lib/Stateful/ClassMethods.rb

Instance Method Summary collapse

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

Returns:

  • (Boolean)


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, options = {}, &block)
  stateful_state_machine.initial_state(state_name, options, &block)
end

#state(state_name, options = {}, &block) ⇒ Object



40
41
42
# File 'lib/Stateful/ClassMethods.rb', line 40

def state(state_name, options = {}, &block)
  stateful_state_machine.state(state_name, options, &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, options = {}, &block)
  unless state_machines.key?(name)
    define_named_machine_methods(name)
  end
  sm = stateful_state_machine(name)
  sm.options = options unless options.empty?
  sm.instance_eval(&block) if block
end

#state_machinesObject



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(options = {}, &block)
  stateful_state_machine.options = options unless options.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