www.pudn.com > ilib > h2html.pl, change:1999-11-30,size:3920b
#!/usr/local/bin/perl
#
# h2html.pl
#
# Image library
#
# Description:
# Create HTML documentation from a C include file.
#
# History:
# 29-Nov-99 Craig Knudsen cknudsen@radix.net
# Updated to show prototype
# 20-Aug-99 Craig Knudsen cknudsen@radix.net
# Misc. bug fix
# 19-Jul-99 Craig Knudsen cknudsen@radix.net
# Modified for nicer looking output.
# 29-May-96 Craig Knudsen cknudsen@radix.net
# Created
#
#######################################################################
sub print_function {
$out{$name} = "\n";
$out{$name} .= "$ret_type $name ( $args )\n";
$out{$name} .= "$description
\n"
if ( defined ( $description ) );
$out{$name} .= "Returns: $ret_type
\n" .
"Input Parameters:
\n
\n";
for ( $i = 0; $i < $num_ivars; $i++ ) {
$out{$name} .= "- $vars[$i]";
$out{$name} .= " - $comments[$i]" if ( defined ( $comments[$i] ) );
$out{$name} .= "\n";
}
$out{$name} .= "
\n";
if ( $i < $num_vars ) {
$out{$name} .= "Output Parameters:
\n
\n";
}
}
$line = 1;
$functions_found;
while ( <> ) {
chop;
$line++;
if ( /Description:/ ) {
$in_info = 1;
} elsif ( /History:/ ) {
$in_info = 0;
} elsif ( $in_info ) {
if ( /\*\s+/ ) {
$info .= " " if length ( $info );
$info .= $';
}
} elsif ( ! $functions_found ) {
if ( /^\*\* Functions/ ) {
$functions_found = 1;
} else {
next;
}
}
elsif ( /^([^\*]\S+)\s+(\S+)\s+\(/ ) {
# start of a function.
$name = $2;
$ret_type = $1;
if ( $name =~ /^\*/ ) {
$name = $';
$ret_type .= " *";
}
$name =~ s/^_//;
$num_vars = 0;
$num_ivars = 0;
} elsif ( defined ( $name ) ) {
if ( /^\s+(\S.*)\s+\/\*\s*(\S.*)\s*\*\// ) {
$vars[$num_vars] = $1;
$comments[$num_vars] = $2;
if ( $comments[$num_vars] =~ /^out: / ) {
$comments[$num_vars] =~ s/^out:\s*//;;
} else {
$num_ivars++;
}
$vars[$num_vars] =~ s/[\s,]+$//;
$args .= ", " if ( $args ne "" );
$args .= $vars[$num_vars];
$num_vars++;
} elsif ( /^\);/ ) {
&print_function;
undef ( $name );
undef ( @vars );
undef ( @comments );
undef ( $description );
undef ( $args );
} elsif ( /\s+\/\*\s*(\S.*)\s*\*\// ) {
if ( $num_vars <= 0 ) { print "ERROR ($line): $_\n"; exit ( 1 ); }
$comments[$num_vars-1] .= " " . $1;
}
} elsif ( /^\*+\// ) {
# end comment
} elsif ( /^\*+\s*(\S.*)$/ ) {
$description .= " " if ( length ( $description ) );
$description .= $1;
} elsif ( /^\/*/ ) {
undef ( $description );
}
}
@months = ( "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul",
"Aug", "Sep", "Oct", "Nov", "Dec" );
( $mday, $mon, $year ) = ( localtime ( time ) )[3,4,5];
$now = sprintf "%02d-%s-%04d",
$mday, $months[$mon], $year + 1900;
print<
ILib API Documentation
Ilib Image Library
$info
API Documentation
EOF
foreach $name ( sort keys ( %out ) ) {
print "- $name\n";
}
print "
\n
\n";
foreach $name ( sort keys ( %out ) ) {
print "\n" . $out{$name};
}
print "\n