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
|