summaryrefslogtreecommitdiff
path: root/IkiWiki.pm
diff options
context:
space:
mode:
authorJoey Hess <joey@kodama.kitenet.net>2008-07-13 14:41:40 -0400
committerJoey Hess <joey@kodama.kitenet.net>2008-07-13 14:41:40 -0400
commitedb59cd5b949de7a68f3b74e7949bf3893b23c6a (patch)
tree036db895d4013c4d5b7ae2cb39b5c26ef6f8fa66 /IkiWiki.pm
parent2bd4dea7f029f30b4b07ba2e91358f5c3bf04a10 (diff)
Error handling improvement for preprocess hooks. It's now safe to call error() from such hooks; it will cause a nicely formatted error message to be inserted into the page.
Diffstat (limited to 'IkiWiki.pm')
-rw-r--r--IkiWiki.pm33
1 files changed, 21 insertions, 12 deletions
diff --git a/IkiWiki.pm b/IkiWiki.pm
index d4e19c388..80e317110 100644
--- a/IkiWiki.pm
+++ b/IkiWiki.pm
@@ -768,21 +768,30 @@ sub preprocess ($$$;$$) { #{{{
}
my $ret;
if (! $scan) {
- $ret=$hooks{preprocess}{$command}{call}->(
- @params,
- page => $page,
- destpage => $destpage,
- preview => $preprocess_preview,
- );
+ $ret=eval {
+ $hooks{preprocess}{$command}{call}->(
+ @params,
+ page => $page,
+ destpage => $destpage,
+ preview => $preprocess_preview,
+ );
+ };
+ if ($@) {
+ chomp $@;
+ $ret="[[!$command <span class=\"error\">".
+ gettext("Error").": $@"."</span>]]";
+ }
}
else {
# use void context during scan pass
- $hooks{preprocess}{$command}{call}->(
- @params,
- page => $page,
- destpage => $destpage,
- preview => $preprocess_preview,
- );
+ eval {
+ $hooks{preprocess}{$command}{call}->(
+ @params,
+ page => $page,
+ destpage => $destpage,
+ preview => $preprocess_preview,
+ );
+ };
$ret="";
}
$preprocessing{$page}--;