From 51eb04c84c40bd9cdfeda3b14fa7048773329cba Mon Sep 17 00:00:00 2001 From: Andrew White Date: Sun, 22 Feb 2009 15:41:16 +1300 Subject: [PATCH] Remove hardcoded number_of_capturesin ControllerSegment to allow regexp requirements with capturing parentheses --- actionpack/lib/action_controller/routing/segments.rb | 4 ---- actionpack/test/controller/routing_test.rb | 10 ++++++++++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/actionpack/lib/action_controller/routing/segments.rb b/actionpack/lib/action_controller/routing/segments.rb index aacea4063d1a5..1911427d61fba 100644 --- a/actionpack/lib/action_controller/routing/segments.rb +++ b/actionpack/lib/action_controller/routing/segments.rb @@ -240,10 +240,6 @@ def regexp_chunk "(?i-:(#{(regexp || Regexp.union(*possible_names)).source}))" end - def number_of_captures - 1 - end - # Don't URI.escape the controller name since it may contain slashes. def interpolation_chunk(value_code = local_name) "\#{#{value_code}.to_s}" diff --git a/actionpack/test/controller/routing_test.rb b/actionpack/test/controller/routing_test.rb index 98b79dbc577c1..2be36d468795f 100644 --- a/actionpack/test/controller/routing_test.rb +++ b/actionpack/test/controller/routing_test.rb @@ -893,6 +893,16 @@ def test_route_with_regexp_for_controller assert_equal '/content/foo', rs.generate(:controller => "content", :action => "foo") end + def test_route_with_regexp_and_captures_for_controller + rs.draw do |map| + map.connect ':controller/:action/:id', :controller => /admin\/(accounts|users)/ + end + assert_equal({:controller => "admin/accounts", :action => "index"}, rs.recognize_path("/admin/accounts")) + assert_equal({:controller => "admin/users", :action => "index"}, rs.recognize_path("/admin/users")) + assert_raises(ActionController::RoutingError) { rs.recognize_path("/admin/products") } + end + + def test_route_with_regexp_and_dot rs.draw do |map| map.connect ':controller/:action/:file',