From: Simon McVittie <smcv@debian.org>
Date: Sat, 4 Jun 2011 15:55:02 +0000 (+0100)
Subject: comments: collect metadata in a scan-phase preprocess hook
X-Git-Tag: 3.20110707~16^2~1
X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/commitdiff_plain/aae95b8d547373cfd54107c507a78150bc1f23f3?ds=inline;hp=-c

comments: collect metadata in a scan-phase preprocess hook
---

aae95b8d547373cfd54107c507a78150bc1f23f3
diff --git a/IkiWiki/Plugin/comments.pm b/IkiWiki/Plugin/comments.pm
index 9fb81d15a..3ad2a0e13 100755
--- a/IkiWiki/Plugin/comments.pm
+++ b/IkiWiki/Plugin/comments.pm
@@ -21,7 +21,8 @@ my %commentstate;
 sub import {
 	hook(type => "checkconfig", id => 'comments',  call => \&checkconfig);
 	hook(type => "getsetup", id => 'comments',  call => \&getsetup);
-	hook(type => "preprocess", id => 'comment', call => \&preprocess);
+	hook(type => "preprocess", id => 'comment', call => \&preprocess,
+		scan => 1);
 	hook(type => "preprocess", id => 'commentmoderation', call => \&preprocess_moderation);
 	# here for backwards compatability with old comments
 	hook(type => "preprocess", id => '_comment', call => \&preprocess);
@@ -143,22 +144,27 @@ sub preprocess {
 	}
 	$content =~ s/\\"/"/g;
 
-	if ($config{comments_allowdirectives}) {
-		$content = IkiWiki::preprocess($page, $params{destpage},
-			$content);
-	}
+	if (defined wantarray) {
+		if ($config{comments_allowdirectives}) {
+			$content = IkiWiki::preprocess($page, $params{destpage},
+				$content);
+		}
 
-	# no need to bother with htmlize if it's just HTML
-	$content = IkiWiki::htmlize($page, $params{destpage}, $format, $content)
-		if defined $format;
+		# no need to bother with htmlize if it's just HTML
+		$content = IkiWiki::htmlize($page, $params{destpage}, $format, $content)
+			if defined $format;
 
-	IkiWiki::run_hooks(sanitize => sub {
-		$content = shift->(
-			page => $page,
-			destpage => $params{destpage},
-			content => $content,
-		);
-	});
+		IkiWiki::run_hooks(sanitize => sub {
+			$content = shift->(
+				page => $page,
+				destpage => $params{destpage},
+				content => $content,
+			);
+		});
+	}
+	else {
+		IkiWiki::preprocess($page, $params{destpage}, $content, 1);
+	}
 
 	# set metadata, possibly overriding [[!meta]] directives from the
 	# comment itself