Don't run the moose controller test if Moose isn't available
[catagits/Catalyst-Runtime.git] / lib / Catalyst / Controller.pm
index 657c59e..5902597 100644 (file)
@@ -285,6 +285,11 @@ sub _parse_Chained_attr {
     if (defined($value) && length($value)) {
         if ($value eq '.') {
             $value = '/'.$self->action_namespace($c);
+        } elsif (my ($rel, $rest) = $value =~ /^((?:\.{2}\/)+)(.*)$/) {
+            my @parts = split '/', $self->action_namespace($c);
+            my @levels = split '/', $rel;
+
+            $value = '/'.join('/', @parts[0 .. $#parts - @levels], $rest);
         } elsif ($value !~ m/^\//) {
             my $action_ns = $self->action_namespace($c);
 
@@ -301,6 +306,11 @@ sub _parse_Chained_attr {
     return Chained => $value;
 }
 
+sub _parse_ChainedParent_attr {
+    my ($self, $c, $name, $value) = @_;
+    return $self->_parse_Chained_attr($c, $name, '../'.$name);
+}
+
 sub _parse_PathPrefix_attr {
     my $self = shift;
     return PathPart => $self->path_prefix;