Module: ValidateArgs::Validators
- Defined in:
- lib/validate_args/validators.rb
Constant Summary collapse
- @@validators =
Hash.new({})
Class Method Summary collapse
- .get_validator(owner, meth) ⇒ Object
- .register_validator(owner, meth, rules, __proxy__) ⇒ Object
- .validate!(owner, meth, args) ⇒ Object
Class Method Details
.get_validator(owner, meth) ⇒ Object
21 22 23 |
# File 'lib/validate_args/validators.rb', line 21 def get_validator(owner, meth) @@validators[owner][meth] end |
.register_validator(owner, meth, rules, __proxy__) ⇒ Object
10 11 12 13 14 15 16 17 18 19 |
# File 'lib/validate_args/validators.rb', line 10 def register_validator(owner, meth, rules, __proxy__) rules = [rules] unless rules.is_a? Array @@validators[owner][meth] = rules.map {|rule| Data::Validator.new(rule) } __proxy__.module_eval do define_method(meth) do |*args| ::ValidateArgs::Validators.validate!(self, meth, args) super(*args) end end end |
.validate!(owner, meth, args) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/validate_args/validators.rb', line 25 def validate!(owner, meth, args) rules = get_validator(owner, meth) errors = [] rules.zip(args).each_with_index do |(rule, arg), i| if rule and arg begin rule.validate(arg) rescue ::Data::Validator::Error => e errors[i] = e. end end end raise ArgumentTypeError, ErrorPrinter.new(owner, meth, errors).to_s if !errors.empty? true end |