h2html.pl
上传用户:changbiao
上传日期:2007-01-13
资源大小:141k
文件大小:4k
- #!/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} = "<H3><A NAME="$name">$name</A></H3>n";
- $out{$name} .= "<TT>$ret_type $name ( $args )</TT><P>n";
- $out{$name} .= "$description<P>n"
- if ( defined ( $description ) );
- $out{$name} .= "Returns: <TT>$ret_type</TT><P>n" .
- "Input Parameters:<BR>n<UL>n";
- for ( $i = 0; $i < $num_ivars; $i++ ) {
- $out{$name} .= "<LI><TT>$vars[$i]</TT>";
- $out{$name} .= " - $comments[$i]" if ( defined ( $comments[$i] ) );
- $out{$name} .= "n";
- }
- $out{$name} .= "</UL><P>n";
- if ( $i < $num_vars ) {
- $out{$name} .= "Output Parameters:<BR>n<UL><P>n";
- for ( ; $i < $num_vars; $i++ ) {
- $out{$name} .= "<LI><TT>$vars[$i]</TT>";
- $out{$name} .= " - $comments[$i]" if ( defined ( $comments[$i] ) );
- $out{$name} .= "n";
- }
- $out{$name} .= "</UL>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<<EOF;
- <HTML>
- <HEAD>
- <TITLE>ILib API Documentation</TITLE>
- </HEAD>
- <BODY BGCOLOR="#FFFFFF">
- <H2>Ilib Image Library</H2>
- <BLOCKQUOTE>
- $info
- </BLOCKQUOTE>
- <TABLE BORDER=0>
- <TR><TD>Home Page:</TD>
- <TD><A HREF="http://www.radix.net/~cknudsen/Ilib/">http://www.radix.net/~cknudsen/Ilib/</A></TD></TR>
- <TR><TD>Author:</TD>
- <TD><A HREF="http://www.radix.net/~cknudsen/">Craig Knudsen</A>, <A HREF="mailto:cknudsen@radix.net">cknudsen@radix.net</A></TD></TR>
- <TR><TD>Last updated:</TD><TD>$now</TD></TR>
- </TABLE>
- <H2>API Documentation</H2>
- <UL>
- EOF
- foreach $name ( sort keys ( %out ) ) {
- print "<LI><A HREF="#$name">$name</A>n";
- }
- print "</UL>n<HR>n";
- foreach $name ( sort keys ( %out ) ) {
- print "<P>n" . $out{$name};
- }
- print "</BODY>n</HTML>n";
- exit 0;