Class: Array

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

Instance Method Summary collapse

Instance Method Details

#schema_walk(value, mapper) ⇒ Object



252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
# File 'lib/rschema.rb', line 252

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

  if not value.is_a?(Array)
    RSchema::ErrorDetails.new(value, 'is not an Array')
  elsif fixed_size && value.size != size
    RSchema::ErrorDetails.new(value, "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 error.extend_key_path(idx) if error
      subvalue_walked
    end
  end
end