summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Hess <joey@kodama.kitenet.net>2008-01-09 02:30:46 -0500
committerJoey Hess <joey@kodama.kitenet.net>2008-01-09 02:30:46 -0500
commit50faf0b151e08887b686e88d525b3b3e3b5379e5 (patch)
tree9f288c35bd6fb54c0d7cca1a41f95fdd3827f438
parent65db156614d7d5dffaeb16f338c5702c4d5945df (diff)
Call preprocessor hooks in void context during the scan pass.
This allows the hook to determine if it's just scanning, and avoid expensive operations.
-rw-r--r--IkiWiki.pm25
1 files changed, 19 insertions, 6 deletions
diff --git a/IkiWiki.pm b/IkiWiki.pm
index b0ac8bbb4..d001760a2 100644
--- a/IkiWiki.pm
+++ b/IkiWiki.pm
@@ -723,12 +723,25 @@ sub preprocess ($$$;$$) { #{{{
$command, $page, $preprocessing{$page}).
"]]";
}
- my $ret=$hooks{preprocess}{$command}{call}->(
- @params,
- page => $page,
- destpage => $destpage,
- preview => $preprocess_preview,
- );
+ my $ret;
+ if (! $scan) {
+ $ret=$hooks{preprocess}{$command}{call}->(
+ @params,
+ page => $page,
+ destpage => $destpage,
+ preview => $preprocess_preview,
+ );
+ }
+ else {
+ # use void context during scan pass
+ $hooks{preprocess}{$command}{call}->(
+ @params,
+ page => $page,
+ destpage => $destpage,
+ preview => $preprocess_preview,
+ );
+ $ret="";
+ }
$preprocessing{$page}--;
return $ret;
}