class Valideizer::Core
Attributes
rules[RW]
Public Class Methods
new(autocast: true)
click to toggle source
# File lib/valideizer/core.rb, line 15 def initialize(autocast: true) @autocast = autocast @rules = {} reinit_errrors end
Public Instance Methods
add_rule(param, *rules)
click to toggle source
Adds new rule for validation
# File lib/valideizer/core.rb, line 28 def add_rule(param, *rules) check_rule_set(rules[0]) @rules[param.to_s] = rules[0] end
Also aliased as: valideize
clean!()
click to toggle source
Cleanes rules and errors
# File lib/valideizer/core.rb, line 22 def clean! @rules = {} reinit_errrors end
errors()
click to toggle source
Prints error messages
# File lib/valideizer/core.rb, line 59 def errors build_error_messages @error_messages end
valideized?(params)
click to toggle source
Validates and recasts params
# File lib/valideizer/core.rb, line 36 def valideized?(params) pre_process params params.each do |param, value| next unless null_check(param, value) @rules[param.to_s].each do |type, constraint| begin push_error(param, value, type, constraint) unless validate(value, type, constraint) rescue ArgumentError => ex puts ex end end if @rules.include? param.to_s end if @errors.empty? post_process params true else false end end
Private Instance Methods
build_error_messages()
click to toggle source
# File lib/valideizer/core.rb, line 157 def build_error_messages @error_messages = print_errors end
has_allow_null_rule(param)
click to toggle source
# File lib/valideizer/core.rb, line 107 def has_allow_null_rule(param) nil_rule = @rules[param.to_s]&.find { |r, _c| r == :null } nil_rule.nil? ? false : nil_rule.last end
null_check(param, value)
click to toggle source
# File lib/valideizer/core.rb, line 98 def null_check(param, value) if !value.nil? || value.nil? && has_allow_null_rule(param) true else push_error(param, :null, nil, nil) false end end
post_process(params)
click to toggle source
# File lib/valideizer/core.rb, line 112 def post_process(params) @rules.each do |key, rules| next if params[key.to_s].nil? && params[key.to_sym].nil? key = key.to_sym if params.include? key.to_sym type_rule = rules.find { |r, _c| r == :type } recast(params, key, type_rule.last) if type_rule datetime_rule = rules.find { |r, _c| r == :format } params[key] = cast_to_time_with_format(params[key], datetime_rule.last) if datetime_rule regexp_rule = rules.find { |r, _c| r == :regexp } regexp_groups_substitution(params, key, regexp_rule.last) if regexp_rule end end
pre_process(params)
click to toggle source
# File lib/valideizer/core.rb, line 66 def pre_process(params) reinit_errrors setup_defaults params end
push_error(param, value, type, constraint)
click to toggle source
# File lib/valideizer/core.rb, line 76 def push_error(param, value, type, constraint) @errors[param] = [] unless @errors.member? param @errors[param].push(type: type, value: value, constraint: constraint) end
recast(params, key, type)
click to toggle source
# File lib/valideizer/core.rb, line 129 def recast(params, key, type) value = params[key] params[key] = case type when :json then cast_from_json value when :boolean then cast_to_boolean value when :float then cast_to_float value when :integer then cast_to_integer value when :datetime then cast_to_time value else value end end
regexp_groups_substitution(params, key, regexp)
click to toggle source
# File lib/valideizer/core.rb, line 141 def regexp_groups_substitution(params, key, regexp) value = params[key] matched = value.match regexp return if matched.nil? params[key] = if matched.named_captures.any? matched.named_captures elsif matched.captures.count > 1 matched.captures elsif matched.captures.count == 1 matched.captures[0] else value end end
reinit_errrors()
click to toggle source
# File lib/valideizer/core.rb, line 71 def reinit_errrors @errors = {} @error_messages = [] end
setup_defaults(params)
click to toggle source
# File lib/valideizer/core.rb, line 81 def setup_defaults(params) @rules.each do |param, rules| default_rule = rules.find { |r, _c| r == :default } can_be_defaulted = default_rule && (params[param].nil? || params[param]&.empty?) if params.include? param.to_sym param = param.to_sym params[param] = default_rule.last if default_rule && (params[param].nil? || params[param]&.empty?) elsif params.include? param.to_s param = param.to_s params[param] = default_rule.last if default_rule && (params[param].nil? || params[param]&.empty?) else params.merge!(param => default_rule.last) if can_be_defaulted end end end