aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon McVittie <smcv@debian.org>2014-09-12 21:45:04 +0100
committerSimon McVittie <smcv@debian.org>2014-09-12 21:45:04 +0100
commit252804628d7297f756f8587d78a07a61fc00846e (patch)
tree7c9726e0ca4a7980676327601a81e4130d3a556b
parent1a785a311e8dfa3de88bb36410b8a3a817b9b533 (diff)
parent24599e3cc9acf801caa0be6c2428dd86f21b53c3 (diff)
downloadikiwiki-252804628d7297f756f8587d78a07a61fc00846e.tar
ikiwiki-252804628d7297f756f8587d78a07a61fc00846e.tar.gz
Merge branch 'ready/perf'
-rw-r--r--IkiWiki/Plugin/conditional.pm6
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},