conditional: use pagespec_match_list

master
Joey Hess 2009-10-09 13:07:50 -04:00
parent 769b78df07
commit f9f7a6e9f3
1 changed files with 7 additions and 13 deletions

View File

@ -31,8 +31,7 @@ sub preprocess_if (@) {
my $result=0; my $result=0;
if (! IkiWiki::yesno($params{all}) || if (! IkiWiki::yesno($params{all}) ||
# An optimisation to avoid needless looping over every page # An optimisation to avoid needless looping over every page
# and adding of dependencies for simple uses of some of the # for simple uses of some of the tests.
# tests.
$params{test} =~ /^([\s\!()]*((enabled|sourcepage|destpage|included)\([^)]*\)|(and|or))[\s\!()]*)+$/) { $params{test} =~ /^([\s\!()]*((enabled|sourcepage|destpage|included)\([^)]*\)|(and|or))[\s\!()]*)+$/) {
add_depends($params{page}, "($params{test}) and $params{page}"); add_depends($params{page}, "($params{test}) and $params{page}");
$result=pagespec_match($params{page}, $params{test}, $result=pagespec_match($params{page}, $params{test},
@ -41,17 +40,12 @@ sub preprocess_if (@) {
destpage => $params{destpage}); destpage => $params{destpage});
} }
else { else {
add_depends($params{page}, $params{test}); $result=pagespec_match_list($params{page}, $params{test},
# stop after first match
foreach my $page (keys %pagesources) { num => 1,
if (pagespec_match($page, $params{test}, sourcepage => $params{page},
location => $params{page}, destpage => $params{destpage},
sourcepage => $params{page}, );
destpage => $params{destpage})) {
$result=1;
last;
}
}
} }
my $ret; my $ret;