summaryrefslogtreecommitdiff
path: root/pod/rofftoc
blob: a2d0e7ba20479a813698aee48c731e53901ce8a6 (plain)
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
63
64
65
66
# feed this into perl
	eval 'exec perl -S $0 ${1+"$@"}'
		if $running_under_some_shell;

# 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"