Sha256: 5da75065a53bf201ae4164e2f5a65b0e8f69c51ae03bc67ab80f890a45295120

Contents?: true

Size: 1.06 KB

Versions: 9

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, 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, options)
                fragments.pop
              end
            end
          end
        end
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
json-schema-1.0.12 lib/json-schema/attributes/additionalitems.rb
json-schema-1.0.11 lib/json-schema/attributes/additionalitems.rb
json-schema-1.0.10 lib/json-schema/attributes/additionalitems.rb
json-schema-1.0.9 lib/json-schema/attributes/additionalitems.rb
json-schema-1.0.8 lib/json-schema/attributes/additionalitems.rb
json-schema-1.0.7 lib/json-schema/attributes/additionalitems.rb
json-schema-1.0.6 lib/json-schema/attributes/additionalitems.rb
json-schema-1.0.5 lib/json-schema/attributes/additionalitems.rb
json-schema-1.0.4 lib/json-schema/attributes/additionalitems.rb