diff options
author | intrigeri <intrigeri@boum.org> | 2008-10-10 14:30:31 +0200 |
---|---|---|
committer | intrigeri <intrigeri@boum.org> | 2008-10-18 15:49:08 +0200 |
commit | e51089e11fc1093a253fc13ebfbd5d55912eba59 (patch) | |
tree | 81128b7f3a26ac81dbd9ef8341681deefb3568af /IkiWiki.pm | |
parent | c8330da6c050918eaea4a441ba2ed59258f49494 (diff) | |
download | ikiwiki-e51089e11fc1093a253fc13ebfbd5d55912eba59.tar ikiwiki-e51089e11fc1093a253fc13ebfbd5d55912eba59.tar.gz |
added the tweakbestlink hook
Signed-off-by: intrigeri <intrigeri@boum.org>
Diffstat (limited to 'IkiWiki.pm')
-rw-r--r-- | IkiWiki.pm | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/IkiWiki.pm b/IkiWiki.pm index e75175a8d..f2b50e77a 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -807,6 +807,7 @@ sub will_render ($$;$) { #{{{ sub bestlink ($$) { #{{{ my $page=shift; my $link=shift; + my $res=undef; my $cwd=$page; if ($link=~s/^\/+//) { @@ -821,25 +822,35 @@ sub bestlink ($$) { #{{{ $l.=$link; if (exists $links{$l}) { - return $l; + $res=$l; } elsif (exists $pagecase{lc $l}) { - return $pagecase{lc $l}; + $res=$pagecase{lc $l}; } - } while $cwd=~s{/?[^/]+$}{}; + } while ($cwd=~s{/?[^/]+$}{} && ! defined $res); - if (length $config{userdir}) { + if (! defined $res && length $config{userdir}) { my $l = "$config{userdir}/".lc($link); if (exists $links{$l}) { - return $l; + $res=$l; } elsif (exists $pagecase{lc $l}) { - return $pagecase{lc $l}; + $res=$pagecase{lc $l}; } } - #print STDERR "warning: page $page, broken link: $link\n"; - return ""; + if (defined $res) { + run_hooks(tweakbestlink => sub { + $res=shift->( + page => $page, + link => $res); + }); + return $res; + } + else { + #print STDERR "warning: page $page, broken link: $link\n"; + return ""; + } } #}}} sub isinlinableimage ($) { #{{{ |