aboutsummaryrefslogtreecommitdiff
path: root/IkiWiki.pm
diff options
context:
space:
mode:
Diffstat (limited to 'IkiWiki.pm')
-rw-r--r--IkiWiki.pm34
1 files changed, 20 insertions, 14 deletions
diff --git a/IkiWiki.pm b/IkiWiki.pm
index b56c62801..a6bfddab0 100644
--- a/IkiWiki.pm
+++ b/IkiWiki.pm
@@ -9,8 +9,8 @@ use URI::Escape q{uri_escape_utf8};
use open qw{:utf8 :std};
use vars qw{%config %links %oldlinks %pagemtime %pagectime %pagecase
- %renderedfiles %oldrenderedfiles %pagesources %depends %hooks
- %forcerebuild $gettext_obj};
+ %renderedfiles %oldrenderedfiles %pagesources %destsources
+ %depends %hooks %forcerebuild $gettext_obj};
use Exporter q{import};
our @EXPORT = qw(hook debug error template htmlpage add_depends pagespec_match
@@ -328,9 +328,13 @@ sub will_render ($$;$) { #{{{
$renderedfiles{$page}=[$dest, grep { $_ ne $dest } @{$renderedfiles{$page}}];
}
else {
+ foreach my $old (@{$renderedfiles{$page}}) {
+ delete $destsources{$old};
+ }
$renderedfiles{$page}=[$dest];
$cleared{$page}=1;
}
+ $destsources{$dest}=$page;
} #}}}
sub bestlink ($$) { #{{{
@@ -455,7 +459,7 @@ sub urlto ($$) { #{{{
return beautify_url(baseurl($from));
}
- if (! grep { $_ eq $to } map { @{$_} } values %renderedfiles) {
+ if (! $destsources{$to}) {
$to=htmlpage($to);
}
@@ -489,18 +493,19 @@ sub htmllink ($$$;@) { #{{{
return "<span class=\"selflink\">$linktext</span>"
if length $bestlink && $page eq $bestlink;
- if (! grep { $_ eq $bestlink } map { @{$_} } values %renderedfiles) {
+ if (! $destsources{$bestlink}) {
$bestlink=htmlpage($bestlink);
- }
- if (! grep { $_ eq $bestlink } map { @{$_} } values %renderedfiles) {
- return $linktext unless length $config{cgiurl};
- return "<span><a href=\"".
- cgiurl(
- do => "create",
- page => pagetitle(lc($link), 1),
- from => $lpage
- ).
- "\">?</a>$linktext</span>"
+
+ if (! $destsources{$bestlink}) {
+ return $linktext unless length $config{cgiurl};
+ return "<span><a href=\"".
+ cgiurl(
+ do => "create",
+ page => pagetitle(lc($link), 1),
+ from => $lpage
+ ).
+ "\">?</a>$linktext</span>"
+ }
}
$bestlink=abs2rel($bestlink, dirname(htmlpage($page)));
@@ -723,6 +728,7 @@ sub loadindex () { #{{{
$oldlinks{$page}=[@{$items{link}}];
$links{$page}=[@{$items{link}}];
$depends{$page}=$items{depends}[0] if exists $items{depends};
+ $destsources{$_}=$page foreach @{$items{dest}};
$renderedfiles{$page}=[@{$items{dest}}];
$oldrenderedfiles{$page}=[@{$items{dest}}];
$pagecase{lc $page}=$page;