| #!/usr/bin/perl |
| |
| # this is really a faq2html and should only be used for this purpose |
| |
| sub fixline { |
| $_ =~ s/\</</g; |
| $_ =~ s/\>/>/g; |
| |
| $_ =~ s/(http:\/\/([a-zA-Z0-9_.\/-]*)[^\) .\n])/\<a href=\"$1\"\>$1\<\/a\>/g; |
| |
| $_ =~ s/(\\|\/)$/$1 /g; # clobber backslash on end of line |
| } |
| |
| sub show { |
| if(@q) { |
| print @q; |
| undef @q; |
| } |
| if(@a) { |
| print @a; |
| undef @a; |
| } |
| if(@p) { |
| print "<pre>\n"; |
| print @p; |
| print "</pre>\n"; |
| undef @p; |
| } |
| } |
| |
| while(<STDIN>) { |
| |
| fixline($_); |
| |
| # detect and mark Q-sections |
| if( $_ =~ /^(Q(\d*)[.:] )(.*)/) { |
| |
| show(); |
| |
| # collect the full Q |
| push @q, "<a name=\"$2\"></a><p class=\"faqq\">"; |
| push @q, "$2. $3"; |
| my $line; |
| |
| $indent = length($1); |
| $first = " " x $indent; |
| |
| #print "$indent|$first|$1|\n"; |
| |
| while(<STDIN>) { |
| |
| fixline($_); |
| |
| $line = $_; |
| |
| if($_ !~ /^A/) { |
| push @q, "$_"; |
| } |
| else { |
| last; |
| } |
| } |
| # first line of A |
| $line =~ s/^A(\d*)[.:] *//g; # cut off the "A[num]." |
| push @a, "<p class=\"faqa\">"; |
| push @a, $line; |
| |
| $prev='a'; |
| next; |
| } |
| # print "$_ matches '$first'?\n"; |
| |
| if($_ =~ /^$first(\S)/) { |
| |
| |
| if($prev ne 'a') { |
| show(); |
| push @a, "<p class=\"faqa\">"; |
| } |
| |
| push @a, $_; |
| $prev='a'; |
| } |
| else { |
| if($prev ne 'p') { |
| show(); |
| } |
| if(@p) { |
| # if we have data, we fix blank lines |
| $_ =~ s/^\s*$/\ \n/g; # empty lines are nbsp |
| push @p, $_; # add it |
| } |
| elsif($_ !~ /^\s*$/) { |
| # this is not a blank line, add it |
| push @p, $_; |
| } |
| $prev = 'p'; |
| } |
| } |
| show(); |
| |