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; 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; }