Module: Draco::State::ClassMethods

Defined in:
lib/draco/state.rb

Instance Method Summary collapse

Instance Method Details

#state(values, options = {}) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
# 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