simplify handling of captures

This commit is contained in:
Konstantin Haase 2011-10-30 12:36:09 -07:00
parent fe34d41939
commit 1e0477f570
2 changed files with 4 additions and 16 deletions

View File

@ -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

View File

@ -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