X-Git-Url: https://sipb.mit.edu/gitweb.cgi/ikiwiki.git/blobdiff_plain/ee1ad53c4c2710aa7ded61bdc56f3a8cce514f22..a3334211c54bf76e97f3dfd3c3d171c6079a20af:/IkiWiki/Render.pm diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index 0b7e00d9d..ef4d11235 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -44,11 +44,7 @@ sub backlinks ($) { #{{{ push @links, { url => $href, page => pagetitle($p_trimmed) }; } - @links = sort { $a->{page} cmp $b->{page} } @links; - - return \@links, [] if @links <= $config{numbacklinks} || ! $config{numbacklinks}; - return [@links[0..$config{numbacklinks}-1]], - [@links[$config{numbacklinks}..$#links]]; + return @links; } #}}} sub parentlinks ($) { #{{{ @@ -105,7 +101,16 @@ sub genpage ($$$) { #{{{ $template->param(have_actions => 1); } - my ($backlinks, $more_backlinks)=backlinks($page); + my @backlinks=sort { $a->{page} cmp $b->{page} } backlinks($page); + my ($backlinks, $more_backlinks); + if (@backlinks <= $config{numbacklinks} || ! $config{numbacklinks}) { + $backlinks=\@backlinks; + $more_backlinks=[]; + } + else { + $backlinks=[@backlinks[0..$config{numbacklinks}-1]]; + $more_backlinks=[@backlinks[$config{numbacklinks}..$#backlinks]]; + } $template->param( title => $page eq 'index' @@ -154,7 +159,7 @@ sub scan ($) { #{{{ # Always needs to be done, since filters might add links # to the content. - $content=filter($page, $content); + $content=filter($page, $page, $content); my @links; while ($content =~ /(? $pagemtime{$page} || $forcerebuild{$page}) { - debug(sprintf(gettext("scanning %s"), $file)); - $pagemtime{$page}=$mtime; - push @changed, $file; - scan($file); + $pagemtime{$page}=$mtime; + push @needsbuild, $file; } } - calculate_backlinks(); + run_hooks(needsbuild => sub { shift->(\@needsbuild) }); - # render changed and new pages - foreach my $file (@changed) { + # scan and rendder files + foreach my $file (@needsbuild) { + debug(sprintf(gettext("scanning %s"), $file)); + scan($file); + } + calculate_backlinks(); + foreach my $file (@needsbuild) { debug(sprintf(gettext("rendering %s"), $file)); render($file); $rendered{$file}=1; @@ -446,7 +454,7 @@ sub commandline_render () { #{{{ my $content=readfile($srcfile); my $page=pagename($file); $pagesources{$page}=$file; - $content=filter($page, $content); + $content=filter($page, $page, $content); $content=preprocess($page, $page, $content); $content=linkify($page, $page, $content); $content=htmlize($page, $type, $content);