From aae95b8d547373cfd54107c507a78150bc1f23f3 Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Sat, 4 Jun 2011 16:55:02 +0100 Subject: comments: collect metadata in a scan-phase preprocess hook --- IkiWiki/Plugin/comments.pm | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-) 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 -- cgit v1.2.3