class Extant::Coercers::Array

Attributes

value_type[RW]

Public Instance Methods

coerce() click to toggle source
# File lib/extant/coercers/array.rb, line 7
def coerce
  return ArgumentError unless value.respond_to?(:to_a)
  result = value.to_a
  return ArgumentError unless result.is_a?(::Array)

  if value_type
    result = result.map do |v|
      coerce_value(v)
    end
  end

  self.coerced = true

  result
rescue ArgumentError
  UncoercedValue
end

Private Instance Methods

coerce_value(v) click to toggle source
# File lib/extant/coercers/array.rb, line 27
def coerce_value(v)
  coercer = value_type.new(v)
  result = coercer.coerce
  raise ArgumentError unless coercer.coerced?
  result
end
key_type() click to toggle source
# File lib/extant/coercers/array.rb, line 34
def key_type
  self.class.key_type
end
value_type() click to toggle source
# File lib/extant/coercers/array.rb, line 38
def value_type
  self.class.value_type
end