class Atacama::Validator

Validation execution class for a given set of parameters and options.

Attributes

context[R]
klass[R]
options[R]

Public Class Methods

call(**context) click to toggle source
# File lib/atacama/contract/validator.rb, line 6
def self.call(**context)
  new(**context).call
end
new(options:, context:, klass:) click to toggle source

@param options [Hash] options schema @param context [Atacama::Context] keyword arguments to validate

# File lib/atacama/contract/validator.rb, line 12
def initialize(options:, context:, klass:)
  @options = options
  @context = context
  @klass = klass
end

Public Instance Methods

call() click to toggle source
# File lib/atacama/contract/validator.rb, line 18
def call
  detect_invalid_types!
end

Private Instance Methods

detect_invalid_types!() click to toggle source
# File lib/atacama/contract/validator.rb, line 26
def detect_invalid_types!
  options.each do |key, parameter|
    value = context[key]
    Atacama.check parameter.type, value do |e|
      raise OptionTypeMismatchError, Atacama.format_exception(klass, e,
        "The value #{value.inspect} for #{key.inspect} is the incorrect type"
      )
    end
  end
end