Sha256: b20a9771166ee51c925c0795a8f37100658b3e6df7030cdf7dad73479a995912
Contents?: true
Size: 1.7 KB
Versions: 3
Compression:
Stored size: 1.7 KB
Contents
require 'compel/validation/conditions/condition' require 'compel/validation/conditions/is' require 'compel/validation/conditions/in' require 'compel/validation/conditions/min' require 'compel/validation/conditions/max' require 'compel/validation/conditions/format' require 'compel/validation/conditions/length' require 'compel/validation/conditions/min_length' require 'compel/validation/conditions/max_length' require 'compel/validation/conditions/if' require 'compel/validation/result' module Compel module Validation CONDITIONS = { is: Validation::Is, in: Validation::In, min: Validation::Min, max: Validation::Max, range: Validation::Range, format: Validation::Format, length: Validation::Length, min_length: Validation::MinLength, max_length: Validation::MaxLength, if: Validation::If, } def validate(value, type, options) if value.nil? && !!(options[:required] && options[:required][:value]) return [options[:required][:message] || 'is required'] end errors = Errors.new options.each do |name, option_values| next unless condition_exists?(name) cloned_options = option_values.dup option_value = cloned_options.delete(:value) result = condition_klass(name).validate \ value, option_value, cloned_options.merge(type: type) unless result.valid? errors.add :base, result.error_message end end errors.to_hash[:base] || [] end def condition_exists?(option_name) CONDITIONS.keys.include?(option_name.to_sym) end def condition_klass(option_name) CONDITIONS[option_name.to_sym] end extend self end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
compel-0.5.1 | lib/compel/validation/validation.rb |
compel-0.5.0 | lib/compel/validation/validation.rb |
compel-0.4.3 | lib/compel/validation/validation.rb |