Sha256: 802f0040feb6e6ece52ae572d1dce2beb0900afd9d4cd8e6e03eb4f6a3b70ad6

Contents?: true

Size: 1.09 KB

Versions: 26

Compression:

Stored size: 1.09 KB

Contents

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

26 entries across 26 versions & 1 rubygems

Version Path
json-schema-2.2.5 lib/json-schema/attributes/additionalitems.rb
json-schema-2.2.4 lib/json-schema/attributes/additionalitems.rb
json-schema-2.2.3 lib/json-schema/attributes/additionalitems.rb
json-schema-2.2.2 lib/json-schema/attributes/additionalitems.rb
json-schema-2.2.1 lib/json-schema/attributes/additionalitems.rb
json-schema-1.2.1 lib/json-schema/attributes/additionalitems.rb
json-schema-2.2.0 lib/json-schema/attributes/additionalitems.rb
json-schema-1.2.0 lib/json-schema/attributes/additionalitems.rb
json-schema-2.1.9 lib/json-schema/attributes/additionalitems.rb
json-schema-2.1.8 lib/json-schema/attributes/additionalitems.rb
json-schema-2.1.7 lib/json-schema/attributes/additionalitems.rb
json-schema-2.1.6 lib/json-schema/attributes/additionalitems.rb
json-schema-2.1.5 lib/json-schema/attributes/additionalitems.rb
json-schema-2.1.4 lib/json-schema/attributes/additionalitems.rb
json-schema-2.1.3 lib/json-schema/attributes/additionalitems.rb
json-schema-2.1.2 lib/json-schema/attributes/additionalitems.rb
json-schema-2.1.1 lib/json-schema/attributes/additionalitems.rb
json-schema-2.1.0 lib/json-schema/attributes/additionalitems.rb
json-schema-2.0.5 lib/json-schema/attributes/additionalitems.rb
json-schema-2.0.4 lib/json-schema/attributes/additionalitems.rb