Class: JsonValidation::Validators::Items

Inherits:
Validator
  • Object
show all
Defined in:
lib/json_validation/validators/items.rb

Instance Attribute Summary

Attributes inherited from Validator

#base_uri, #fragment

Instance Method Summary collapse

Methods inherited from Validator

#build_validator, #build_validator_with_new_base_uri, #initialize, type

Constructor Details

This class inherits a constructor from JsonValidation::Validators::Validator

Instance Method Details

#inner_validatorObject



19
20
21
22
# File 'lib/json_validation/validators/items.rb', line 19

def inner_validator
  raise unless fragment["items"].is_a?(Hash)
  @inner_validator ||= build_validator(fragment["items"])
end

#inner_validatorsObject



24
25
26
27
28
29
# File 'lib/json_validation/validators/items.rb', line 24

def inner_validators
  raise unless fragment["items"].is_a?(Array)
  @inner_validators ||= fragment["items"].map {|f|
    build_validator(f)
  }
end

#validate(record) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/json_validation/validators/items.rb', line 6

def validate(record)
  case fragment['items']
  when Hash
    record.all? {|item| inner_validator.validate(item)}
  when Array
    inner_validators.zip(record).all? {|validator, item|
      validator.validate(item)
    }
  else
    raise "Unexpected type for fragment['items']"
  end
end