67 lines
1.5 KiB
Plaintext
67 lines
1.5 KiB
Plaintext
|
# 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"
|