Method: Focuslight::Validator.validate_single

Defined in:
lib/focuslight/validator.rb

.validate_single(result, params, key_arg, spec) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/focuslight/validator.rb', line 39

def self.validate_single(result, params, key_arg, spec)
  key = key_arg.to_sym

  value = params[key]
  if spec.has_key?(:default) && value.nil?
    value = spec[:default]
  end
  if spec[:excludable] && value.nil?
    result[key] = nil
    return
  end

  rules = [spec[:rule]].flatten.compact

  errors = []
  valid = true
  formatted = value

  rules.each do |rule|
    if rule.check(value)
      formatted = rule.format(value)
    else
      result.error(key, rule.message)
      valid = false
    end
  end

  if valid
    result[key] = formatted
  end
end