don't use pagespec_match_list

This should be more efficient than pagespec_match_list since it short-circuits
after the first match is found.

The other problem with using pagespec_match_list here is it may throw an
error if a bad or failing pagespec somehow got into the dependencies.
master
Joey Hess 2009-08-25 17:46:15 -04:00
parent 2ef6b15973
commit 7dd9b65db4
1 changed files with 14 additions and 12 deletions

View File

@ -460,19 +460,21 @@ sub refresh () {
my $p=pagename($f);
if (exists $depends{$p}) {
foreach my $d (keys %{$depends{$p}}) {
my $sub=pagespec_translate($d);
next if $@ || ! defined $sub;
# only consider internal files
# if the page explicitly depends on such files
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;
# if the page explicitly depends
# on such files
foreach my $file (@changed, $d =~ /internal\(/ ? @internal : ()) {
next if $file eq $f;
my $page=pagename($file);
if ($sub->($page, location => $p)) {
debug(sprintf(gettext("building %s, which depends on %s"), $f, $page));
render($f);
$rendered{$f}=1;
next F;
}
}
}
}