Sha256: e3f28aba25bf56802d26b73ad656ed3e5570671928243fede86514248a68754c

Contents?: true

Size: 1.06 KB

Versions: 5

Compression:

Stored size: 1.06 KB

Contents

module JSON
  class Schema
    class AdditionalItemsAttribute < Attribute
      def self.validate(current_schema, data, fragments, 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(message, fragments, current_schema, 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, options)
                fragments.pop
              end
            end
          end
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 2 rubygems

Version Path
json-schema-1.0.3 lib/json-schema/attributes/additionalitems.rb
json-schema-1.0.2 lib/json-schema/attributes/additionalitems.rb
seomoz-json-schema-1.0.1 lib/json-schema/attributes/additionalitems.rb
json-schema-1.0.1 lib/json-schema/attributes/additionalitems.rb
json-schema-1.0.0 lib/json-schema/attributes/additionalitems.rb