X-Git-Url: https://sipb.mit.edu/gitweb.cgi/ikiwiki.git/blobdiff_plain/f7ae61c8d2bb1645c476b69061015f7d43b8edfd..af3cc556bab1e2b840f8521b4da09bcf05f04fd9:/IkiWiki/Render.pm diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index 0fe20c64f..308d60ed0 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -61,6 +61,10 @@ sub backlinks ($) { sub genpage ($$) { my $page=shift; my $content=shift; + + run_hooks(postscan => sub { + shift->(page => $page, content => $content); + }); my $templatefile; run_hooks(templatefile => sub { @@ -130,10 +134,6 @@ sub genpage ($$) { $content=$template->output; - run_hooks(postscan => sub { - shift->(page => $page, content => $content); - }); - run_hooks(format => sub { $content=shift->( page => $page, @@ -287,13 +287,13 @@ sub find_src_files () { wanted => sub { my $file=decode_utf8($_); $file=~s/^\Q$config{srcdir}\E\/?//; + return if -l $_ || -d _ || ! length $file; my $page = pagename($file); if (! exists $pagesources{$page} && file_pruned($file)) { $File::Find::prune=1; return; } - return if -l $_ || -d _ || ! length $file; my ($f) = $file =~ /$config{wiki_file_regexp}/; # untaint if (! defined $f) { @@ -314,13 +314,13 @@ sub find_src_files () { wanted => sub { my $file=decode_utf8($_); $file=~s/^\Q$dir\E\/?//; + return if -l $_ || -d _ || ! length $file; my $page=pagename($file); if (! exists $pagesources{$page} && file_pruned($file)) { $File::Find::prune=1; return; } - return if -l $_ || -d _ || ! length $file; my ($f) = $file =~ /$config{wiki_file_regexp}/; # untaint if (! defined $f) { @@ -392,27 +392,39 @@ sub find_del_files ($) { push @internal_del, $pagesources{$page}; } else { - debug(sprintf(gettext("removing old page %s"), $page)); push @del, $pagesources{$page}; } $links{$page}=[]; $renderedfiles{$page}=[]; $pagemtime{$page}=0; - foreach my $old (@{$oldrenderedfiles{$page}}) { - prune($config{destdir}."/".$old); - } - delete $pagesources{$page}; - foreach my $source (keys %destsources) { - if ($destsources{$source} eq $page) { - delete $destsources{$source}; - } - } } } return \@del, \@internal_del; } +sub remove_del (@) { + foreach my $file (@_) { + my $page=pagename($file); + if (! isinternal($page)) { + debug(sprintf(gettext("removing old page %s"), $page)); + } + + foreach my $old (@{$oldrenderedfiles{$page}}) { + prune($config{destdir}."/".$old); + } + + foreach my $source (keys %destsources) { + if ($destsources{$source} eq $page) { + delete $destsources{$source}; + } + } + + delete $pagecase{lc $page}; + delete $pagesources{$page}; + } +} + sub find_changed ($) { my $files=shift; my @changed; @@ -633,6 +645,8 @@ sub refresh () { } calculate_links(); + + remove_del(@$del, @$internal_del); foreach my $file (@$changed) { render($file, sprintf(gettext("building %s"), $file));