From: Joey Hess Date: Wed, 29 Jun 2011 21:55:53 +0000 (-0400) Subject: Merge remote-tracking branch 'smcv/comments-metadata' X-Git-Tag: 3.20110707~16 X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/commitdiff_plain/6d01db205f41f16755fe7fbe49694b3bba2121c8?hp=7b57bb843f2fe8b7901f7b9b10c95597527d4093 Merge remote-tracking branch 'smcv/comments-metadata' --- 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 diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index 5288abc6d..05132a8a8 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -475,8 +475,18 @@ sub find_changed ($) { $pagemtime{$page}=$stat[9]; if (isinternal($page)) { + my $content = readfile($srcfile); + # Preprocess internal page in scan-only mode. - preprocess($page, $page, readfile($srcfile), 1); + preprocess($page, $page, $content, 1); + + run_hooks(scan => sub { + shift->( + page => $page, + content => $content, + ); + }); + push @internal_changed, $file; } else { diff --git a/t/comments.t b/t/comments.t new file mode 100755 index 000000000..4721d7a9c --- /dev/null +++ b/t/comments.t @@ -0,0 +1,57 @@ +#!/usr/bin/perl +use warnings; +use strict; +use Test::More 'no_plan'; +use IkiWiki; + +ok(! system("rm -rf t/tmp")); +ok(mkdir "t/tmp"); +ok(! system("cp -R t/tinyblog t/tmp/in")); +ok(mkdir "t/tmp/in/post" or -d "t/tmp/in/post"); + +my $comment; + +$comment = <; + close $fh or return undef; + return $content; +} + +my $content = slurp("t/tmp/out/post/index.html"); +ok(defined $content); +ok($content =~ m/I conquered.*I explored.*I landed/s);