module Draco::State::ClassMethods

Public Instance Methods

state(values, options = {}) click to toggle source
# File lib/draco/state.rb, line 19
def state(values, options = {})
  raise Draco::State::StateExistsError, "This entity already has a state defined" if @default_state
  raise Draco::State::NoStatesDefinedError, "This entity has no possible states defined." if values.nil? || values.empty?

  @default_state = options.delete(:default) || values.first.new
  @state_options = values
  unless values.include?(@default_state.class)
    message = ["The default state is not a member of the possible states."]
    messate += "Make sure you initialize the class." if @default_state.is_a?(Class)

    raise Draco::State::InvalidDefaultError, message.join(" ")
  end
end