Class: Array

Inherits:
Object
  • Object
show all
Defined in:
lib/rschema.rb

Instance Method Summary collapse

Instance Method Details

#schema_walk(value, mapper) ⇒ Object



223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
# File 'lib/rschema.rb', line 223

def schema_walk(value, mapper)
  fixed_size = (size != 1)

  if not value.is_a?(Array)
    RSchema::ErrorDetails.new("is not an Array")
  elsif fixed_size && value.size != size
    RSchema::ErrorDetails.new("does not have #{size} elements")
  else
    value.each.with_index.map do |subvalue, idx|
      subschema = (fixed_size ? self[idx] : first)
      subvalue_walked, error = RSchema.walk(subschema, subvalue, mapper)
      break RSchema::ErrorDetails.new({ idx => error.details }) if error
      subvalue_walked
    end
  end
end