Class: Pakyow::Validator

Inherits:
Object
  • Object
show all
Extended by:
Support::ClassState
Defined in:
lib/pakyow/validator.rb

Defined Under Namespace

Classes: Result

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(key = nil, &block) ⇒ Validator

Returns a new instance of Validator.



52
53
54
55
56
57
58
59
# File 'lib/pakyow/validator.rb', line 52

def initialize(key = nil, &block)
  @key = key
  @validations = []

  if block
    instance_eval(&block)
  end
end

Class Method Details

.register_validation(validation_object, validation_name) ⇒ Object



38
39
40
# 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) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



43
44
45
46
47
# File 'lib/pakyow/validator.rb', line 43

def validation_object_for(validation)
  @validation_objects[validation] || raise(
    UnknownValidationError.new_with_message(validation: validation)
  )
end

Instance Method Details

#any?Boolean

Returns:

  • (Boolean)


61
62
63
# File 'lib/pakyow/validator.rb', line 61

def any?
  @validations.any?
end

#call(values, context: nil) ⇒ Object



75
76
77
78
79
80
81
82
83
84
85
# 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) ⇒ Object



65
66
67
68
69
70
71
72
73
# 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