Class: Strict::Validators::ArrayOf

Inherits:
Object
  • Object
show all
Includes:
DetailedValidator
Defined in:
lib/strict/validators/array_of.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from DetailedValidator

#===

Constructor Details

#initialize(element_validator) ⇒ ArrayOf

Returns a new instance of ArrayOf.



10
11
12
# File 'lib/strict/validators/array_of.rb', line 10

def initialize(element_validator)
  @element_validator = element_validator
end

Instance Attribute Details

#element_validatorObject (readonly)

Returns the value of attribute element_validator.



8
9
10
# File 'lib/strict/validators/array_of.rb', line 8

def element_validator
  @element_validator
end

Instance Method Details

#coercerObject



14
15
16
17
# File 'lib/strict/validators/array_of.rb', line 14

def coercer
  element_coercer = element_validator.coercer if element_validator.respond_to?(:coercer)
  Coercers::Array.new(element_coercer)
end

#inspectObject Also known as: to_s



33
34
35
# File 'lib/strict/validators/array_of.rb', line 33

def inspect
  "ArrayOf(#{element_validator.inspect})"
end

#violations(value) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/strict/validators/array_of.rb', line 19

def violations(value)
  return Validation.invalid(self, value) unless Array === value

  violations = nil
  value.each_with_index do |element, index|
    element_violations = Validation.violations(element_validator, element)
    next if element_violations.empty?

    violations ||= []
    violations.concat(Validation.prepend_path(element_violations, index))
  end
  violations || Validation::NONE
end