class Aquam::State

Public Class Methods

new(object) click to toggle source
# File lib/aquam/state.rb, line 3
def initialize(object)
  @object = object
end
state_machine() click to toggle source
# File lib/aquam/state.rb, line 12
def state_machine
  @state_machine
end
use_machine(state_machine) click to toggle source
# File lib/aquam/state.rb, line 16
def use_machine(state_machine)
  @state_machine ||= begin
     validate_state_machine state_machine
     define_event_methods state_machine

     state_machine
   end
end

Private Class Methods

define_event_methods(machine) click to toggle source
# File lib/aquam/state.rb, line 27
def define_event_methods(machine)
  machine.events.keys.each do |event|
    define_method event do
      fail Aquam::InvalidTransitionError
    end
  end
end
validate_state_machine(machine) click to toggle source
# File lib/aquam/state.rb, line 35
def validate_state_machine(machine)
  unless machine && machine.ancestors.include?(Aquam::Machine)
    fail Aquam::InvalidStateMachineError
  end
end

Public Instance Methods

state_machine() click to toggle source
# File lib/aquam/state.rb, line 7
def state_machine
  self.class.state_machine || fail(Aquam::InvalidStateMachineError)
end