class ValidateParams::Core
Constants
- CAST_TYPES
- OPTIONS
Public Class Methods
new(params, args)
click to toggle source
# File lib/validate_params/core.rb, line 13 def initialize(params, args) @params = params @args = args proceed end
validate!(params, args)
click to toggle source
# File lib/validate_params/core.rb, line 8 def validate!(params, args) new(params, args) end
Private Instance Methods
_raise(msg)
click to toggle source
# File lib/validate_params/core.rb, line 113 def _raise(msg) raise InvalidParamsException.new msg end
cast(param, type)
click to toggle source
# File lib/validate_params/core.rb, line 95 def cast(param, type) unless CAST_TYPES.include? type raise TypeError.new("Cast type #{type} is not valid") end @types ||= { Integer: 0, Array: [], Float: 0.0 }.freeze @params[param] = begin self.send(type, @params[param]) rescue @types[type] end end
proceed()
click to toggle source
# File lib/validate_params/core.rb, line 22 def proceed @args.each do |arg| case arg when Symbol validate_presence(arg) when Hash arg.each do |h| validate_hash(h) end end end end
validate_class(key, klass)
click to toggle source
# File lib/validate_params/core.rb, line 54 def validate_class(key, klass) unless @params[key].is_a? klass _raise("#{key} is not a #{klass}") end end
validate_hash(hash)
click to toggle source
# File lib/validate_params/core.rb, line 39 def validate_hash(hash) key, value = hash case value when Class validate_class(key, value) when Hash validate_presence(key) unless value.keys.include? :default value.each do |opt_key, opt_value| validate_option(key, opt_key, opt_value) end end end
validate_option(param, opt_key, opt_value)
click to toggle source
# File lib/validate_params/core.rb, line 60 def validate_option(param, opt_key, opt_value) unless OPTIONS.include? opt_key raise TypeError.new("Option #{opt_key} is not valid") end case opt_key when :type validate_class(param, opt_value) when :default @params[param] = opt_value when :cast cast(param, opt_value) when :size unless @params[param].size == opt_value _raise("#{param} size is not equal to #{opt_value}") end when :range unless opt_value.include? @params[param].to_i _raise("#{param} is not included in #{opt_value}") end when :in unless opt_value.include? @params[param] _raise("#{param} is not included in #{opt_value}") end when :regex unless opt_value =~ @params[param] _raise("#{param} does not match with #{opt_value}") end when :custom unless opt_value.call @params[param] _raise("#{param} does not match with #{opt_value}") end end end
validate_presence(key)
click to toggle source
# File lib/validate_params/core.rb, line 35 def validate_presence(key) _raise("#{key} is not present") unless @params[key].present? end