From: Joey Hess Date: Sat, 10 Jan 2009 19:24:21 +0000 (-0500) Subject: refactor pagespec derelevitisation code X-Git-Url: https://sipb.mit.edu/gitweb.cgi/ikiwiki.git/commitdiff_plain/8fd086cb8ac49dad2b14f9d85e58e42348b6c102?hp=af9566a6952905beff7f1ca9db64f01c3faf4ff2 refactor pagespec derelevitisation code --- diff --git a/IkiWiki.pm b/IkiWiki.pm index 7eef4c320..892b5b5a8 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -1807,19 +1807,25 @@ sub new { package IkiWiki::PageSpec; +sub derel ($$) { + my $path=shift; + my $from=shift; + + if ($path =~ m!^\./!) { + $from=~s#/?[^/]+$## if defined $from; + $path=~s#^\./##; + $path="$from/$path" if length $from; + } + + return $path; +} + sub match_glob ($$;@) { my $page=shift; my $glob=shift; my %params=@_; - my $from=exists $params{location} ? $params{location} : ''; - - # relative matching - if ($glob =~ m!^\./!) { - $from=~s#/?[^/]+$##; - $glob=~s#^\./##; - $glob="$from/$glob" if length $from; - } + $glob=derel($glob, $params{location}); my $regexp=IkiWiki::glob2re($glob); if ($page=~/^$regexp$/i) { @@ -1844,15 +1850,9 @@ sub match_link ($$;@) { my $link=lc(shift); my %params=@_; + $link=derel($link, $params{location}); my $from=exists $params{location} ? $params{location} : ''; - # relative matching - if ($link =~ m!^\.! && defined $from) { - $from=~s#/?[^/]+$##; - $link=~s#^\./##; - $link="$from/$link" if length $from; - } - my $links = $IkiWiki::links{$page}; return IkiWiki::FailReason->new("$page has no links") unless $links && @{$links}; my $bestlink = IkiWiki::bestlink($from, $link);