23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
# File 'lib/sinatra/params.rb', line 23
def param (name, type, args = {})
raise 'Parameter {name} missing'.sub('{name}', name.to_s) unless params.key? name
params.define_singleton_method(name.to_sym) { self[name] }
p Conversion.respond_as
if params[name].class == type
elsif params[name].respond_to? Conversion.respond_as[type]
params[name] = params[name].send(Conversion.respond_as[type])
elsif Conversion.convert[params[name].class] and Conversion.convert[params[name].class].key? type
params[name] = Conversion.convert[params[name].class][type].call(params[name])
else
raise 'Parameter {name} not found'.sub('{name}', name) unless args[:optional]
end
end
|