module Hashie::Extensions::Dash::PredefinedValues::ClassMethods

def assert_predefined_values!(predefined_values)

def assert_predefined_values!(predefined_values)
  return if supported_type?(predefined_values)
  raise ArgumentError, %(`values` accepts an Array or a Range.)
end

def inherited(klass)

def inherited(klass)
  super
  klass.instance_variable_set(:@values_for_properties, values_for_properties.dup)
end

def property(property_name, options = {})

def property(property_name, options = {})
  super
  return unless (predefined_values = options[:values])
  assert_predefined_values!(predefined_values)
  set_predefined_values(property_name, predefined_values)
end

def set_predefined_values(property_name, predefined_values)

def set_predefined_values(property_name, predefined_values)
  @values_for_properties[property_name] = predefined_values
end

def supported_type?(predefined_values)

def supported_type?(predefined_values)
  [::Array, ::Range].any? { |klass| predefined_values.is_a?(klass) }
end