X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/3bbf5eb28aa22fe993e7f97c583a1c4d64ccc8e5..339478ba4737d77b5e03a3489c3f1f78b7af147d:/IkiWiki/Plugin/conditional.pm?ds=sidebyside

diff --git a/IkiWiki/Plugin/conditional.pm b/IkiWiki/Plugin/conditional.pm
index 2a25135fe..e787424aa 100644
--- a/IkiWiki/Plugin/conditional.pm
+++ b/IkiWiki/Plugin/conditional.pm
@@ -7,15 +7,24 @@ use IkiWiki 2.00;
 use UNIVERSAL;
 
 sub import { #{{{
+	hook(type => "getsetup", id => "conditional", call => \&getsetup);
 	hook(type => "preprocess", id => "if", call => \&preprocess_if);
 } # }}}
 
+sub getsetup { #{{{
+	return
+		plugin => {
+			safe => 1,
+			rebuild => undef,
+		},
+} #}}}
+
 sub preprocess_if (@) { #{{{
 	my %params=@_;
 
 	foreach my $param (qw{test then}) {
 		if (! exists $params{$param}) {
-			return "[[if ".sprintf(gettext('%s parameter is required'), $param)."]]";
+			error sprintf(gettext('%s parameter is required'), $param);
 		}
 	}
 
@@ -24,8 +33,8 @@ sub preprocess_if (@) { #{{{
 		# An optimisation to avoid needless looping over every page
 		# and adding of dependencies for simple uses of some of the
 		# tests.
-		$params{test} =~ /^(enabled|sourcepage|destpage)\((.*)\)$/) {
-		add_depends($params{page}, "$params{test} and $params{page}");
+		$params{test} =~ /^([\s\!()]*((enabled|sourcepage|destpage|included)\([^)]*\)|(and|or))[\s\!()]*)+$/) {
+		add_depends($params{page}, "($params{test}) and $params{page}");
 		$result=pagespec_match($params{page}, $params{test},
 				location => $params{page},
 				sourcepage => $params{page},