X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/37ec6a82433aa1d7030bca7cae9d3813a6bdbd1f..eaec4d97e4c7a2b42e5a0932d63faed10bc232f3:/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));