Class: Pakyow::Validator
- Inherits:
-
Object
- Object
- Pakyow::Validator
- Extended by:
- Support::ClassState
- Defined in:
- lib/pakyow/validator.rb
Defined Under Namespace
Classes: Result
Class Method Summary collapse
- .register_validation(validation_object, validation_name) ⇒ Object
- .validation_object_for(validation) ⇒ Object private
Instance Method Summary collapse
- #any? ⇒ Boolean
- #call(values, context: nil) ⇒ Object
-
#initialize(key = nil, &block) ⇒ Validator
constructor
A new instance of Validator.
- #validate(validation_name = nil, **options, &block) ⇒ Object
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.(validation: validation) ) end |
Instance Method Details
#any? ⇒ 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, | unless validation.valid?(values, key: @key, context: context, **) result.error(validation, ) 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, **, &block) validation_object = if block_given? Validations::Inline.new(validation_name, block) else self.class.validation_object_for(validation_name) end @validations << [validation_object, ] end |