diff options
author | Simon McVittie <smcv@debian.org> | 2014-09-12 21:45:04 +0100 |
---|---|---|
committer | Simon McVittie <smcv@debian.org> | 2014-09-12 21:45:04 +0100 |
commit | 252804628d7297f756f8587d78a07a61fc00846e (patch) | |
tree | 7c9726e0ca4a7980676327601a81e4130d3a556b | |
parent | 1a785a311e8dfa3de88bb36410b8a3a817b9b533 (diff) | |
parent | 24599e3cc9acf801caa0be6c2428dd86f21b53c3 (diff) | |
download | ikiwiki-252804628d7297f756f8587d78a07a61fc00846e.tar ikiwiki-252804628d7297f756f8587d78a07a61fc00846e.tar.gz |
Merge branch 'ready/perf'
-rw-r--r-- | IkiWiki/Plugin/conditional.pm | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/IkiWiki/Plugin/conditional.pm b/IkiWiki/Plugin/conditional.pm index 0a3d7fb4c..b450f1a0a 100644 --- a/IkiWiki/Plugin/conditional.pm +++ b/IkiWiki/Plugin/conditional.pm @@ -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}, |