- # rebuild dependant pages
- foreach my $f (@$files) {
- next if $rendered{$f};
- my $p=pagename($f);
- my $reason = undef;
-
- if (exists $depends_simple{$p}) {
- foreach my $d (keys %{$depends_simple{$p}}) {
- if (($depends_simple{$p}{$d} & $IkiWiki::DEPEND_CONTENT &&
- exists $lc_changed{$d})
- ||
- ($depends_simple{$p}{$d} & $IkiWiki::DEPEND_PRESENCE &&
- exists $lc_exists_changed{$d})) {
- $reason = $d;
- last;
- }
- }
- }
-
- if (exists $depends{$p} && ! defined $reason) {
- D: foreach my $d (keys %{$depends{$p}}) {
- my $sub=pagespec_translate($d);
- next if $@ || ! defined $sub;
-
- my @candidates;
- if ($depends{$p}{$d} & $IkiWiki::DEPEND_CONTENT) {
- @candidates=@changed;
- }
- elsif ($depends{$p}{$d} & $IkiWiki::DEPEND_PRESENCE) {
- @candidates=@exists_changed;
- }
- # only consider internal files
- # if the page explicitly depends
- # on such files
- if ($d =~ /internal\(/) {
- if ($depends{$p}{$d} & $IkiWiki::DEPEND_CONTENT) {
- push @candidates, @internal, @internal_change;
- }
- elsif ($depends{$p}{$d} & $IkiWiki::DEPEND_PRESENCE) {
- push @candidates, @internal;
- }
- }
-
- foreach my $file (@candidates) {
- next if $file eq $f;
- my $page=pagename($file);
- if ($sub->($page, location => $p)) {
- $reason = $page;
- last D;
- }
- }
- }
- }