1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
require 'json-schema/attribute'
module JSON
class Schema
class TypeV4Attribute < Attribute
def self.validate(current_schema, data, fragments, processor, validator, options = {})
union = true
types = current_schema.schema['type']
if !types.is_a?(Array)
types = [types]
union = false
end
return if types.any? { |type| data_valid_for_type?(data, type) }
types = types.map { |type| type.is_a?(String) ? type : '(schema)' }.join(', ')
message = format(
"The property '%s' of type %s did not match %s: %s",
build_fragment(fragments),
data.class,
union ? 'one or more of the following types' : 'the following type',
types
)
validation_error(processor, message, fragments, current_schema, self, options[:record_errors])
end
end
end
end
|