class JSchema::Validator::Items

Private Instance Methods

additional_items_valid?(additional_items) click to toggle source
# File lib/jschema/validator/items.rb, line 13
def additional_items_valid?(additional_items)
  additional_items.nil? ||
  boolean?(additional_items) ||
  valid_schema?(additional_items, 'additionalItems') ||
    invalid_schema('additionalItems', additional_items)
end
applicable_type() click to toggle source
# File lib/jschema/validator/items.rb, line 74
def applicable_type
  Array
end
items_valid?(items) click to toggle source
# File lib/jschema/validator/items.rb, line 20
def items_valid?(items)
  items.nil? ||
  valid_schema?(items, 'items') ||
  schema_array?(items, 'items', false) ||
    invalid_schema('items', items)
end
post_initialize(items, additional_items) click to toggle source
# File lib/jschema/validator/items.rb, line 27
def post_initialize(items, additional_items)
  @items = items || {}
  @additional_items = additional_items
end
schema_for_item(index) click to toggle source
# File lib/jschema/validator/items.rb, line 57
def schema_for_item(index)
  case @items
  when Array
    if index < @items.size
      Schema.build @items[index], parent, "items/#{index}"
    elsif @additional_items.is_a?(Hash)
      Schema.build @additional_items, parent, 'additionalItems'
    else
      Schema.build
    end
  when Hash
    Schema.build @items, parent, 'items'
  else
    fail UnknownError
  end
end
validate_additional_items(instance) click to toggle source
# File lib/jschema/validator/items.rb, line 37
def validate_additional_items(instance)
  if @additional_items == false &&
     @items.is_a?(Array) &&
     @items.size < instance.size

    "#{instance} must not contain any additional items"
  end
end
validate_all_items(instance) click to toggle source
# File lib/jschema/validator/items.rb, line 46
def validate_all_items(instance)
  instance.to_enum.each_with_index do |item, index|
    schema = schema_for_item(index)
    validation_errors = schema.validate(item)
    unless validation_errors.empty?
      return validation_errors.first
    end
  end
  nil
end
validate_args(items, additional_items) click to toggle source
# File lib/jschema/validator/items.rb, line 8
def validate_args(items, additional_items)
  additional_items_valid? additional_items
  items_valid? items
end
validate_instance(instance) click to toggle source
# File lib/jschema/validator/items.rb, line 32
def validate_instance(instance)
  validate_additional_items(instance) ||
  validate_all_items(instance)
end