]>
Commit | Line | Data |
---|---|---|
a5ae8e64 JH |
1 | #!/usr/bin/perl |
2 | ||
3 | my %include = (); | |
fb612d54 | 4 | my %included = (); |
a5ae8e64 | 5 | |
fb612d54 | 6 | for my $text (<*.txt>) { |
a5ae8e64 | 7 | open I, '<', $text || die "cannot read: $text"; |
a5ae8e64 JH |
8 | while (<I>) { |
9 | if (/^include::/) { | |
10 | chomp; | |
11 | s/^include::\s*//; | |
12 | s/\[\]//; | |
fb612d54 JH |
13 | $include{$text}{$_} = 1; |
14 | $included{$_} = 1; | |
a5ae8e64 JH |
15 | } |
16 | } | |
17 | close I; | |
18 | } | |
19 | ||
20 | # Do we care about chained includes??? | |
fb612d54 JH |
21 | my $changed = 1; |
22 | while ($changed) { | |
23 | $changed = 0; | |
24 | while (my ($text, $included) = each %include) { | |
fb612d54 | 25 | for my $i (keys %$included) { |
fb612d54 JH |
26 | # $text has include::$i; if $i includes $j |
27 | # $text indirectly includes $j. | |
28 | if (exists $include{$i}) { | |
fb612d54 | 29 | for my $j (keys %{$include{$i}}) { |
fb612d54 JH |
30 | if (!exists $include{$text}{$j}) { |
31 | $include{$text}{$j} = 1; | |
32 | $included{$j} = 1; | |
33 | $changed = 1; | |
34 | } | |
35 | } | |
36 | } | |
37 | } | |
a5ae8e64 | 38 | } |
a5ae8e64 JH |
39 | } |
40 | ||
fb612d54 JH |
41 | while (my ($text, $included) = each %include) { |
42 | if (! exists $included{$text} && | |
43 | (my $base = $text) =~ s/\.txt$//) { | |
2ba91e96 | 44 | print "$base.html $base.xml : ", join(" ", keys %$included), "\n"; |
fb612d54 JH |
45 | } |
46 | } |