From: Joey Hess <joey@gnu.kitenet.net>
Date: Tue, 20 Jan 2009 21:30:59 +0000 (-0500)
Subject: add human-readable error when unknown pagespec function is called
X-Git-Tag: 3.03~55
X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/commitdiff_plain/b4bbddbf3e3d8f188f161098166fb4a27207ad2b?ds=inline

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.
---

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