Sha256: f4bc2d31f2224030f3e06353498b9849ee633bc75b3e46b2eb5817603d2e33e7

Contents?: true

Size: 1.13 KB

Versions: 3

Compression:

Stored size: 1.13 KB

Contents

require 'json-schema/attribute'

module JSON
  class Schema
    class AdditionalItemsAttribute < Attribute
      def self.validate(current_schema, data, fragments, processor, validator, options = {})
        if data.is_a?(Array) && current_schema.schema['items'].is_a?(Array)
          if current_schema.schema['additionalItems'] == false && current_schema.schema['items'].length != data.length
            message = "The property '#{build_fragment(fragments)}' contains additional array elements outside of the schema when none are allowed"
            validation_error(processor, message, fragments, current_schema, self, options[:record_errors])
          elsif current_schema.schema['additionalItems'].is_a?(Hash)
            schema = JSON::Schema.new(current_schema.schema['additionalItems'],current_schema.uri,validator)
            data.each_with_index do |item,i|
              if i >= current_schema.schema['items'].length
                fragments << i.to_s
                schema.validate(item, fragments, processor, options)
                fragments.pop
              end
            end
          end
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
json-schema-2.4.1 lib/json-schema/attributes/additionalitems.rb
json-schema-2.4.0 lib/json-schema/attributes/additionalitems.rb
json-schema-2.3.0 lib/json-schema/attributes/additionalitems.rb