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
|