use strict;
my $state = 0;
my $cat = "";
my $func = "";
while (<>) {
s/\s+$//;
if (/^\@CATEGORY=(.*)/) {
if ($cat ne $1) {
if ($cat ne "") {
print "\n";
}
$cat = $1;
my $cat_id = "CATEGORY_" . $cat;
$cat_id =~ s/\s+/_/g;
$cat_id =~ s/[^A-Za-z_]//g;
print "\n";
print " ", "e_stuff ($cat), "\n";
}
$state = 0;
}
if (/^\@FUNCTION=(.*)/) {
if ($state) {
if ($state == 3) {
print " \n";
}
print " \n";
print " \n\n";
}
$func = $1;
my $mod_func = &fixup_function_name ($1);
$state = 0;
print "\n\n";
print " \n";
print " \n";
print " $func\n";
print " \n";
print " \n";
print " $func\n";
print " \n";
print " \n";
next;
}
if (/^\@SYNTAX=(.*)/) {
my $str = &markup_stuff ($1);
$str =~ s/([\(\,])(\w*)/\1\2<\/parameter>/g;
print " \n";
print " $str\n";
print " \n";
next;
}
if (/^\@DESCRIPTION=(.*)/) {
print " \n";
print " Description\n";
print " ", &markup_stuff ($1), "\n";
$state = 1;
next;
}
if (/^\@EXAMPLES=(.*)/) {
if ($state) {
if ($state == 3) {
print " \n";
}
print " \n";
}
print " \n";
print " Examples\n";
print " ", &markup_stuff ($1), "\n";
$state = 2;
next;
}
if (/^\@SEEALSO=(.*)/) {
my $linktxt = $1;
$linktxt =~ s/\s//g;
$linktxt =~ s/\.$//;
my @links = split (/,/, $linktxt);
if ($state) {
print " \n";
}
print " \n";
print " See also\n";
my @a = ();
print " \n";
foreach my $link (@links) {
my $fixed_name = &fixup_function_name ($link);
push @a, " $link";
}
if (@a > 0) {
print join (",\n", @a), ".\n";
}
print " \n";
print " \n";
print " \n\n";
$state = 0;
next;
}
if ($state) {
if (/^\*\s/) {
my $str = &markup_stuff ($_);
$str =~ s/^\*\s+//;
if ($state ne 3) {
print " \n";
$state = 3;
}
print " $str\n";
}
elsif ($_ ne "") {
if ($state == 3) {
print " \n";
$state = 1;
}
print " ", &markup_stuff ($_), "\n";
}
}
}
print "\n";
sub markup_stuff {
my ($str) = @_;
$str = "e_stuff ($str);
$str =~ s/\b$func\b/$func<\/function>/g;
$str =~ s/\@(\w*)\b/\1<\/parameter>/g;
return $str;
}
sub quote_stuff {
my ($str) = @_;
# Let's do this one first...
$str =~ s/\&/\&/g;
$str =~ s/\</g;
$str =~ s/>/\>/g;
return $str;
}
sub fixup_function_name {
my ($name) = @_;
# why did we need this ? leave the routine here just in case
# $name =~ s/_/x/g;
return $name;
}