-
-
Save AMHOL/dcc99af2c2d5034453d9 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'thread_safe' | |
require 'dry-configurable' | |
require 'dry/validator/version' | |
# A collection of micro-libraries, each intended to encapsulate | |
# a common task in Ruby | |
module Dry | |
# A simple stand-alone validator | |
# | |
# @example | |
# | |
# User = Struct.new(:name) | |
# | |
# user_validator = Dry::Validator.new( | |
# name: { | |
# presence: true | |
# } | |
# ) | |
# | |
# user = User.new('') | |
# validator.call(user) | |
# => {:name=>[{:code=>"presence", :options=>true}]} | |
# | |
# @api public | |
class Validator | |
attr_reader :rules, :processor | |
setting :default_processor, Dry::Validator::Processor | |
def initialize(**params) | |
if params.fetch(:rules, false) | |
@rules = params.fetch(:rules, {}) | |
@processor = params.fetch(:processor, default_processor) | |
else | |
@rules = params | |
@processor = default_processor | |
end | |
end | |
def merge(other) | |
self.class.new( | |
rules: rules.merge(other.rules), | |
processor: processor | |
) | |
end | |
alias_method :<<, :merge | |
def call(attributes) | |
processor.call(rules, attributes) | |
end | |
alias_method :validate, :call | |
private | |
def default_processor | |
self.class.config.default_processor | |
end | |
end | |
end |
Author
AMHOL
commented
Jul 22, 2015
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment