class Pakyow::Validator

Public Class Methods

new(key = nil, &block) click to toggle source
# File lib/pakyow/validator.rb, line 52
def initialize(key = nil, &block)
  @key = key
  @validations = []

  if block
    instance_eval(&block)
  end
end
register_validation(validation_object, validation_name) click to toggle source
# File lib/pakyow/validator.rb, line 38
def register_validation(validation_object, validation_name)
  @validation_objects[validation_name] = validation_object
end
validation_object_for(validation) click to toggle source

@api private

# File lib/pakyow/validator.rb, line 43
def validation_object_for(validation)
  @validation_objects[validation] || raise(
    UnknownValidationError.new_with_message(validation: validation)
  )
end

Public Instance Methods

any?() click to toggle source
# File lib/pakyow/validator.rb, line 61
def any?
  @validations.any?
end
call(values, context: nil) click to toggle source
# File lib/pakyow/validator.rb, line 75
def call(values, context: nil)
  result = Result.new(@key)

  @validations.each do |validation, options|
    unless validation.valid?(values, key: @key, context: context, **options)
      result.error(validation, options)
    end
  end

  result
end
validate(validation_name = nil, **options, &block) click to toggle source
# File lib/pakyow/validator.rb, line 65
def validate(validation_name = nil, **options, &block)
  validation_object = if block_given?
    Validations::Inline.new(validation_name, block)
  else
    self.class.validation_object_for(validation_name)
  end

  @validations << [validation_object, options]
end