git

Форк
0
/
build-docdep.perl 
47 строк · 1001.0 Байт
1
#!/usr/bin/perl
2

3
my %include = ();
4
my %included = ();
5

6
for my $text (<*.txt>) {
7
    open I, '<', $text || die "cannot read: $text";
8
    while (<I>) {
9
	if (/^include::/) {
10
	    chomp;
11
	    s/^include::\s*//;
12
	    s/\[\]//;
13
	    $include{$text}{$_} = 1;
14
	    $included{$_} = 1;
15
	}
16
    }
17
    close I;
18
}
19

20
# Do we care about chained includes???
21
my $changed = 1;
22
while ($changed) {
23
    $changed = 0;
24
    while (my ($text, $included) = each %include) {
25
	for my $i (keys %$included) {
26
	    # $text has include::$i; if $i includes $j
27
	    # $text indirectly includes $j.
28
	    if (exists $include{$i}) {
29
		for my $j (keys %{$include{$i}}) {
30
		    if (!exists $include{$text}{$j}) {
31
			$include{$text}{$j} = 1;
32
			$included{$j} = 1;
33
			$changed = 1;
34
		    }
35
		}
36
	    }
37
	}
38
    }
39
}
40

41
foreach my $text (sort keys %include) {
42
    my $included = $include{$text};
43
    if (! exists $included{$text} &&
44
	(my $base = $text) =~ s/\.txt$//) {
45
	print "$base.html $base.xml : ", join(" ", sort keys %$included), "\n";
46
    }
47
}
48

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.