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

Attributes

values_for_properties[R]

Public Instance Methods

inherited(klass) click to toggle source
Calls superclass method
# File lib/hashie/extensions/dash/predefined_values.rb, line 27
def inherited(klass)
  super
  klass.instance_variable_set(:@values_for_properties, values_for_properties.dup)
end
property(property_name, options = {}) click to toggle source
Calls superclass method
# File lib/hashie/extensions/dash/predefined_values.rb, line 32
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

Private Instance Methods

assert_predefined_values!(predefined_values) click to toggle source
# File lib/hashie/extensions/dash/predefined_values.rb, line 43
def assert_predefined_values!(predefined_values)
  return if supported_type?(predefined_values)

  raise ArgumentError, %(`values` accepts an Array or a Range.)
end
set_predefined_values(property_name, predefined_values) click to toggle source
# File lib/hashie/extensions/dash/predefined_values.rb, line 53
def set_predefined_values(property_name, predefined_values)
  @values_for_properties[property_name] = predefined_values
end
supported_type?(predefined_values) click to toggle source
# File lib/hashie/extensions/dash/predefined_values.rb, line 49
def supported_type?(predefined_values)
  [::Array, ::Range].any? { |klass| predefined_values.is_a?(klass) }
end