]> sipb.mit.edu Git - ikiwiki.git/blobdiff - IkiWiki/Render.pm
Merge commit 'smcv/ready/optimize-depends'
[ikiwiki.git] / IkiWiki / Render.pm
index 08d484847a5eef33235d33cfdc0d7a39fc5cfbbe..fb28b6e3bb43b48f182496944fcd61df8029d5b4 100644 (file)
@@ -459,18 +459,20 @@ sub refresh () {
                        next if $rendered{$f};
                        my $p=pagename($f);
                        if (exists $depends{$p}) {
-                               foreach my $d (@{$depends{$p}}) {
+                               foreach my $d (keys %{$depends{$p}}) {
                                        # only consider internal files
                                        # if the page explicitly depends on such files
-                                       foreach my $file (@changed, $d=~/internal\(/ ? @internal : ()) {
-                                               next if $f eq $file;
-                                               my $page=pagename($file);
-                                               if (pagespec_match($page, $d, location => $p)) {
-                                                       debug(sprintf(gettext("building %s, which depends on %s"), $f, $page));
-                                                       render($f);
-                                                       $rendered{$f}=1;
-                                                       next F;
-                                               }
+                                       my @pages = map {
+                                               pagename($_)
+                                       } grep {
+                                               $_ ne $f
+                                       } (@changed, $d =~ /internal\(/ ? @internal : ());
+                                       @pages = pagespec_match_list(\@pages, $d, location => $p);
+                                       if (@pages) {
+                                               debug(sprintf(gettext("building %s, which depends on %s"), $f, $pages[0]));
+                                               render($f);
+                                               $rendered{$f}=1;
+                                               next F;
                                        }
                                }
                        }