rockbox/www/faq2html.pl

102 lines
1.9 KiB
Perl
Raw Normal View History

#!/usr/bin/perl
# this is really a faq2html and should only be used for this purpose
sub fixline {
$_ =~ s/\</&lt;/g;
$_ =~ s/\>/&gt;/g;
$_ =~ s/(http:\/\/([a-zA-Z0-9_.\/-]*)[^\) .\n])/\<a href=\"$1\"\>$1\<\/a\>/g;
$_ =~ s/(\\|\/)$/$1&nbsp;/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*$/\&nbsp;\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();