| #!/usr/bin/perl -w |
| |
| $TOCHEADER=" TABLE OF CONTENTS"; |
| |
| open(O, ">FAQ.html"); |
| |
| |
| # Load FAQ into memory |
| while(<>) { |
| push (@faqfile, $_); |
| } |
| my $current_line = 0; |
| my $version; |
| |
| # Skip header up to table of contents |
| while($current_line <= $#faqfile) { |
| $_ = $faqfile[$current_line]; |
| $current_line++; |
| |
| if (/Net-SNMP Version: (.*)/) { |
| $version = $1; |
| } |
| |
| last if (/$TOCHEADER/); |
| } |
| |
| print O '<p class="SectionTitle"> |
| FAQ |
| </p> |
| FAQ Maintainer: Dave Shield<br/> |
| Email: <a href="mailto:net-snmp-coders@lists.sourceforge.net">net-snmp-coders@list.sourceforge.net</a><br/> |
| '; |
| print O "Version: $version<br/>\n"; |
| print O '<hr/> |
| <h2>Table of Contents</h2> |
| '; |
| |
| # Create table of contents |
| while($current_line <= $#faqfile) { |
| $_ = $faqfile[$current_line]; |
| |
| #Skip blank lines |
| if (/^\s*$/) { |
| $current_line++; |
| last; |
| } |
| |
| chomp(); |
| |
| # Remove white space at start of line |
| $_ =~ s/^ *//; |
| |
| $x = $_; |
| |
| # Remove white space at start of line |
| $x =~ s/^ *//g; |
| |
| # Replace all non alpha characters with _ |
| $x =~ s/[^a-zA-Z]/_/g; |
| |
| # Save cleaned up line |
| $xlate{$_} = $x; |
| |
| if ( /&/ ) { $_ =~ s/&/&/g; } |
| if ( /</ ) { $_ =~ s/</</g; } |
| if ( />/ ) { $_ =~ s/>/>/g; } |
| if (/^[ A-Z]+$/) { |
| # Section header (eg: GENERAL) |
| print O "</ul><b>$_</b><ul>\n"; |
| } else { |
| # Question / answer - create link to it |
| if ($faqfile[$current_line+1] =~ /^ */) { |
| |
| # Continuation of the question. |
| $current_line++; |
| my $part2 = $faqfile[$current_line]; |
| |
| # Remove white space at start of line |
| $part2 =~ s/^ *//; |
| |
| print O "<li> <a href=\"#$x\">$_ $part2</a></li>\n"; |
| } |
| else { |
| print O "<li> <a href=\"#$x\">$_</a></li>\n"; |
| } |
| } |
| $current_line++; |
| } |
| |
| print O "</ul><hr/><pre>\n"; |
| |
| # Print contents with targets defined |
| while($current_line <= $#faqfile) { |
| $_ = $faqfile[$current_line]; |
| $current_line++; |
| |
| chomp(); |
| |
| $y = $_; |
| |
| if (defined($xlate{$y})) { |
| print O "<a name=\"$xlate{$y}\"></a>\n"; |
| } |
| if ( /&/ ) { $_ =~ s/&/&/g; } |
| if ( /</ ) { $_ =~ s/</</g; } |
| if ( />/ ) { $_ =~ s/>/>/g; } |
| print O "$_\n"; |
| } |
| |
| print O ' |
| </pre> |
| '; |
| |