90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
# File 'lib/fend/plugins/validation_options.rb', line 90
def validate(opts = {})
return if opts.empty?
allow_nil = opts.delete(:allow_nil)
allow_blank = opts.delete(:allow_blank)
return if (allow_nil == true && value.nil?) || (allow_blank == true && blank?)
opts.each do |validator_name, args|
method_name = "validate_#{validator_name}"
raise Error, "undefined validation method '#{validator_name}'" unless respond_to?(method_name)
if NO_ARG_METHODS.include?(validator_name)
if !!args == args
next unless args
validation_method_args = []
else
validation_method_args = [args]
end
elsif args.is_a?(Hash)
mandatory_arg_key = MANDATORY_ARG_KEYS[validator_name]
unless args.key?(mandatory_arg_key) || args.key?(DEFAULT_ARG_KEY)
raise Error, "missing mandatory argument for '#{validator_name}' validator"
end
mandatory_arg = args.delete(mandatory_arg_key) || args.delete(DEFAULT_ARG_KEY)
validation_method_args = [mandatory_arg, args]
else
validation_method_args = ARRAY_ARG_METHODS.include?(validator_name) ? [args] : args
end
public_send(method_name, *validation_method_args)
end
end
|