class Objecheck::Validator::EachRule

EachRule validates elements in the target by using each

Public Class Methods

new(validator, element_schema) click to toggle source
# File lib/objecheck/validator/each_rule.rb, line 20
def initialize(validator, element_schema)
  @element_rules = validator.compile_schema(element_schema)
end
schema() click to toggle source
# File lib/objecheck/validator/each_rule.rb, line 37
def self.schema
  [{ type: Hash }]
end

Public Instance Methods

validate(target, collector) click to toggle source
# File lib/objecheck/validator/each_rule.rb, line 24
def validate(target, collector)
  if !target.respond_to?(:each)
    collector.add_error('should respond to `each`')
    return
  end

  target.each.with_index do |elem, i|
    collector.add_prefix_in("[#{i}]") do
      collector.validate(elem, @element_rules)
    end
  end
end