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