module StrictMachine::MountStateMachine::InstanceMethods

Public Instance Methods

state() click to toggle source
# File lib/strict_machine/mount_state_machine/instance_methods.rb, line 16
def state
  write_initial_state if current_state_attr_value.nil?

  current_state_attr_value
end
state_attr() click to toggle source
# File lib/strict_machine/mount_state_machine/instance_methods.rb, line 22
def state_attr
  self.class.strict_machine_attr.to_s
end
states() click to toggle source
# File lib/strict_machine/mount_state_machine/instance_methods.rb, line 26
def states
  definition.states
end
trigger(*transitions) click to toggle source
# File lib/strict_machine/mount_state_machine/instance_methods.rb, line 10
def trigger(*transitions)
  transitions.map { |t| change_state(t, state) }

  true
end

Private Instance Methods

change_state(trigger, current_state_name) click to toggle source
# File lib/strict_machine/mount_state_machine/instance_methods.rb, line 36
def change_state(trigger, current_state_name)
  new_state = nil

  duration = Benchmark.measure do
    is_bang, transition = current_state_obj.get_transition(trigger)

    if transition.guarded? && !is_bang
      raise GuardedTransitionError unless public_send(transition.guard)
    end

    new_state = definition.get_state_by_name(transition.to)
    new_state.run_on_entries(self, current_state_name, trigger.to_sym)
  end.real

  definition.run_transitions(
    self, current_state_name, new_state.name, trigger.to_sym, duration
  )

  write_state(new_state.name)
end
current_state_obj() click to toggle source
# File lib/strict_machine/mount_state_machine/instance_methods.rb, line 57
def current_state_obj
  definition.get_state_by_name(current_state_attr_value)
end
definition() click to toggle source
# File lib/strict_machine/mount_state_machine/instance_methods.rb, line 32
def definition
  self.class.strict_machine_class.definition
end