add human-readable error when unknown pagespec function is called

It used to replace unknown functions with "0" when translating a pagespec.
Instead, replace it with a FailReason object. This way, the pagespec will
still evaluate as before (possibly successfully if other terminals exist),
but a human-readable error will be shown if the result is displayed.

Also, an empty pagespec used to be replaced with "0", to avoid a eval
error. Also use a FailReason here.
master
Joey Hess 2009-01-20 16:30:59 -05:00
parent afc1f1d63f
commit b4bbddbf3e
1 changed files with 2 additions and 2 deletions

View File

@ -1729,7 +1729,7 @@ sub pagespec_translate ($) {
$code.="IkiWiki::PageSpec::match_$1(\$page, ".safequote($2).", \@_)"; $code.="IkiWiki::PageSpec::match_$1(\$page, ".safequote($2).", \@_)";
} }
else { else {
$code.=' 0'; $code.="IkiWiki::FailReason->new(".safequote(qq{unknown function in pagespec "$word"}).")";
} }
} }
else { else {
@ -1738,7 +1738,7 @@ sub pagespec_translate ($) {
} }
if (! length $code) { if (! length $code) {
$code=0; $code="IkiWiki::FailReason->new('empty pagespec')";
} }
no warnings; no warnings;