simplify handling of captures
This commit is contained in:
parent
fe34d41939
commit
1e0477f570
|
@ -802,21 +802,8 @@ module Sinatra
|
|||
route = '/' if route.empty? and not settings.empty_path_info?
|
||||
if match = pattern.match(route)
|
||||
values += match.captures.to_a.map { |v| force_encoding URI.decode(v) if v }
|
||||
params =
|
||||
if keys.any?
|
||||
keys.zip(values).inject({}) do |hash,(k,v)|
|
||||
if k == 'splat'
|
||||
(hash[k] ||= []) << v
|
||||
else
|
||||
hash[k] = v
|
||||
end
|
||||
hash
|
||||
end
|
||||
elsif values.any?
|
||||
{'captures' => values}
|
||||
else
|
||||
{}
|
||||
end
|
||||
params = {'splat' => [], 'captures' => values}
|
||||
keys.zip(values) { |k,v| (params[k] ||= '') << v if v }
|
||||
@params = @original_params.merge(params)
|
||||
@block_params = values
|
||||
catch(:pass) do
|
||||
|
|
|
@ -370,7 +370,8 @@ class RoutingTest < Test::Unit::TestCase
|
|||
"firefox" => {"engine" => {"name"=>"spidermonkey", "version"=>"1.7.0"}},
|
||||
"chrome" => {"engine" => {"name"=>"V8", "version"=>"1.0"}}
|
||||
},
|
||||
"paste" => {"name"=>"hello world", "syntax"=>"ruby"}
|
||||
"paste" => {"name"=>"hello world", "syntax"=>"ruby"},
|
||||
"splat"=>[], "captures"=>[]
|
||||
}
|
||||
mock_app {
|
||||
get '/foo' do
|
||||
|
|
Loading…
Reference in New Issue