]> sipb.mit.edu Git - ikiwiki.git/blobdiff - IkiWiki/Plugin/conditional.pm
In all=no conditionals, depend on the influences, not the test pagespec
[ikiwiki.git] / IkiWiki / Plugin / conditional.pm
index 0a3d7fb4cd18ef14261eb6896722c0991d8405dd..b450f1a0a1cea267e3e2791376142c67438f03b9 100644 (file)
@@ -33,11 +33,15 @@ sub preprocess_if (@) {
            # An optimisation to avoid needless looping over every page
            # for simple uses of some of the tests.
            $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},
                                destpage => $params{destpage});
+               my $i = $result->influences;
+               foreach my $k (keys %$i) {
+                       # minor optimization: influences are always simple dependencies
+                       $IkiWiki::depends_simple{$params{page}}{lc $k} |= $i->{$k};
+               }
        }
        else {
                $result=pagespec_match_list($params{page}, $params{test},