X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/02b9f69ba5da59cca9ff198b731d63d643fff4db..fb8334e584d17defc48499105568678bb8867c00:/IkiWiki/Render.pm diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index b65d200a0..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}; - 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; @@ -365,7 +373,7 @@ sub refresh () { #{{{ foreach my $file (keys %rendered, @del) { next if $f eq $file; my $page=pagename($file); - if (pagespec_match($page, $depends{$p}, $p)) { + if (pagespec_match($page, $depends{$p}, location => $p)) { debug(sprintf(gettext("rendering %s, which depends on %s"), $f, $page)); render($f); $rendered{$f}=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);