sub preprocess_if (@) { #{{{
my %params=@_;
- if (! exists $params{test} || ! exists $params{then}) {
- return "[[if ".gettext('"test" and "then" parameters are required')."]]";
+ foreach my $param (qw{test then}) {
+ if (! exists $params{$param}) {
+ error sprintf(gettext('%s parameter is required'), $param);
+ }
}
my $result=0;
- # An optimisation to avoid needless looping over every page
- # and adding of dependencies for simple uses of some of the
- # tests.
- if ($params{test} =~ /^(enabled|sourcepage|destpage)\((.*)\)$/) {
+ if ((exists $params{all} && lc $params{all} eq "no") ||
+ # An optimisation to avoid needless looping over every page
+ # and adding of dependencies for simple uses of some of the
+ # tests.
+ $params{test} =~ /^\s*\!?\s*(enabled|sourcepage|destpage|included)\((.*)\)\s*$/) {
+ add_depends($params{page}, "$params{test} and $params{page}");
$result=pagespec_match($params{page}, $params{test},
location => $params{page},
sourcepage => $params{page},
$ret="";
}
return IkiWiki::preprocess($params{page}, $params{destpage},
- IkiWiki::filter($params{page}, $ret));
+ IkiWiki::filter($params{page}, $params{destpage}, $ret));
} # }}}
package IkiWiki::PageSpec;
}
} #}}}
-sub match_included ($$;$) { #{{{
+sub match_included ($$;@) { #{{{
shift;
shift;
my %params=@_;