Module: Compel::Validation
  
  
  
  
  
  
  
      - Extended by:
- Validation
    - Included in:
- Validation
    - Defined in:
- lib/compel/validation/result.rb,
 lib/compel/validation/validation.rb,
 lib/compel/validation/conditions/in.rb,
 lib/compel/validation/conditions/is.rb,
 lib/compel/validation/conditions/max.rb,
 lib/compel/validation/conditions/min.rb,
 lib/compel/validation/conditions/format.rb,
 lib/compel/validation/conditions/length.rb,
 lib/compel/validation/conditions/condition.rb,
 lib/compel/validation/conditions/max_length.rb,
 lib/compel/validation/conditions/min_length.rb
 
Defined Under Namespace
  
    
  
    
      Classes: Condition, Format, In, Is, Length, Max, MaxLength, Min, MinLength, Range, Result
    
  
  
    
      Constant Summary
      collapse
    
    
      
        - 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,
}
      Instance Method Summary
      collapse
    
    
  
  
    Instance Method Details
    
      
  
  
    #condition_exists?(option_name)  ⇒ Boolean 
  
  
  
  
    | 
54
55
56 | # File 'lib/compel/validation/validation.rb', line 54
def condition_exists?(option_name)
  CONDITIONS.keys.include?(option_name.to_sym)
end | 
 
    
      
  
  
    #condition_klass(option_name)  ⇒ Object 
  
  
  
  
    | 
58
59
60 | # File 'lib/compel/validation/validation.rb', line 58
def condition_klass(option_name)
  CONDITIONS[option_name.to_sym]
end | 
 
    
      
  
  
    #validate(value, type, options)  ⇒ Object 
  
  
  
  
    | 
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 | # File 'lib/compel/validation/validation.rb', line 29
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 |