Fixed detach and whitespaces in Path/Regex
Sebastian Riedel [Thu, 21 Jul 2005 17:19:19 +0000 (17:19 +0000)]
Changes
lib/Catalyst.pm
lib/Catalyst/Dispatcher.pm

diff --git a/Changes b/Changes
index 8d6c8b7..b6c0d39 100644 (file)
--- a/Changes
+++ b/Changes
@@ -6,6 +6,8 @@ This file documents the revision history for Perl extension Catalyst.
         - fixed $Data::Dumper::Terse (Robin Berjon)
         - added arguments for detach
         - new credits section in pod
+        - fixed detach to allow relative action names (Matt and Robert)
+        - added the ability to have whitespaces in Path( '' ) and Regex( '' )
 
 5.30  2005-06-04 12:35:00
 
index 3bf7e4d..c6980a1 100644 (file)
@@ -280,6 +280,8 @@ Marcus Ramberg
 
 Matt S Trout
 
+Robert Sedlacek
+
 Sebastian Riedel
 
 Tatsuhiko Miyagawa
index 7e534e0..3c6404a 100644 (file)
@@ -128,7 +128,10 @@ sub forward {
         return 0;
     }
 
-    my $caller    = caller(0);
+    # Relative forwards from detach
+    my $caller = ( caller(0) )[0]->isa('Catalyst::Dispatcher')
+      && ( ( caller(1) )[3] =~ /::detach$/ ) ? caller(1) : caller(0);
+
     my $namespace = '/';
     my $arguments = ( ref( $_[-1] ) eq 'ARRAY' ) ? pop(@_) : $c->req->args;
 
@@ -320,15 +323,15 @@ sub set_action {
     if ( $flags{path} ) {
         $flags{path} =~ s/^\w+//;
         $flags{path} =~ s/\w+$//;
-        if ( $flags{path} =~ /^'(.*)'$/ ) { $flags{path} = $1 }
-        if ( $flags{path} =~ /^"(.*)"$/ ) { $flags{path} = $1 }
+        if ( $flags{path} =~ /^\s*'(.*)'\s*$/ ) { $flags{path} = $1 }
+        if ( $flags{path} =~ /^\s*"(.*)"\s*$/ ) { $flags{path} = $1 }
     }
 
     if ( $flags{regex} ) {
         $flags{regex} =~ s/^\w+//;
         $flags{regex} =~ s/\w+$//;
-        if ( $flags{regex} =~ /^'(.*)'$/ ) { $flags{regex} = $1 }
-        if ( $flags{regex} =~ /^"(.*)"$/ ) { $flags{regex} = $1 }
+        if ( $flags{regex} =~ /^\s*'(.*)'\s*$/ ) { $flags{regex} = $1 }
+        if ( $flags{regex} =~ /^\s*"(.*)"\s*$/ ) { $flags{regex} = $1 }
     }
 
     my $reverse = $prefix ? "$prefix/$method" : $method;