1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
# Usage: rofftoc PerlTOC.xxx.raw
#
# Post-processes roffitall output. Called from roffitall to produce
# a formatted table of contents.
#
# Author: Tom Christiansen
print <<'EOF';
.de NP
'.sp 0.8i
.tl ''- % -''
'bp
'sp 0.5i
.tl ''\fB\s+2Perl Table of Contents\s0\fR''
'sp 0.3i
..
.wh -1i NP
.af % i
.sp 0.5i
.tl ''\fB\s+5Perl Table of Contents\s0\fR''
.sp 0.5i
.nf
.na
EOF
while (<>) {
#chomp;
s/Index://;
($type, $page, $desc) = split ' ', $_, 3;
$desc =~ s/^"(.*)"$/$1/;
if ($type eq 'Title') {
($name = $desc) =~ s/ .*//;
next;
} elsif ($type eq 'Name') {
#print STDERR $page, "\t", $desc;
print ".ne 5\n";
print ".in 0\n";
print ".sp\n";
print ".ft B\n";
print "$desc\n";
print ".ft P\n";
print ".in 5n\n";
} elsif ($type eq 'Header') {
print ".br\n", $page, "\t", $desc;
} elsif ($type eq 'Subsection') {
print ".br\n", $page, "\t\t", $desc;
} elsif ($type eq 'Item') {
next if $desc =~ /\\bu/;
next unless $name =~ /POSIX|func/i;
print ".br\n", $page, "\t\t\t", $desc;
}
}
__END__
Index:Title 1 "PERL 1"
Index:Name 1 "perl - Practical Extraction and Report Language"
Index:Header 1 "NAME"
Index:Header 1 "SYNOPSIS"
Index:Header 2 "DESCRIPTION"
Index:Item 2 "\(bu Many usability enhancements"
Index:Item 2 "\(bu Simplified grammar"
Index:Item 2 "\(bu Lexical scoping"
Index:Item 2 "\(bu Arbitrarily nested data structures"
Index:Item 2 "\(bu Modularity and reusability"
|