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);
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;