158
159
160
161
162
163
164
165
166
167
168
169
170
|
# File 'lib/decanter/core.rb', line 158
def parse(key, parsers, values, options)
case
when !parsers
{ key => values }
when options[:required] == true && Array.wrap(values).all? { |value| value.nil? || value == "" }
raise ArgumentError.new("No value for required argument: #{key}")
else
Parser.parsers_for(parsers)
.reduce({key => values}) do |vals_hash, parser|
vals_hash.keys.reduce({}) { |acc, k| acc.merge(parser.parse(k, vals_hash[k], options)) }
end
end
end
|