www.pudn.com > httpd-2.2.6-win32-src-r2.zip > default.pl, change:2004-11-24,size:11611b


<< 
# Scandoc template file. 
# 
# This is an example set of templates that is designed to create several  
# different kinds of index files. It generates a "master index" which intended  
# for use with a frames browser; A "package index" which is the root page of  
# the index, and then "package files" containing documentation for all of the  
# classes within a single package. 
 
###################################################################### 
 
## For quick and superficial customization,  
## simply change these variables 
 
$project_name     = '[Apache]'; 
$company_logo     = '<img src="../images/ScanDocBig.jpg">'; # change this to an image tag. 
$copyright        = '© 2000 [Apache Software Foundation]'; 
$image_directory  = "../images/"; 
$bullet1_image    = $image_directory . "ball1.gif"; 
$bullet2_image    = $image_directory . "ball2.gif"; 
$bgcolor1         = "#FFFFFF"; 
$bgcolor2         = "#FFFFFF"; 
 
###################################################################### 
 
## Begin generating frame index file. 
 
file "index.html"; 
>><html> 
  <head> 
    <meta http-equiv="Content-Type" content="text/html; iso-8859-1"> 
    <title>$project_name</title> 
  </head> 
  <frameset cols="190,*"> 
    <frame src="master.html"  name="Master Index" noresize> 
    <frame src="packages.html" name="Documentation"> 
    <noframes> 
      <body bgcolor="$bgcolor2" stylesrc="index.html"> 
        <p>Some Documentation</p> 
      </body> 
    </noframes> 
  </frameset> 
</html> 
<< 
 
###################################################################### 
 
## Begin generating master index file (left-hand frame). 
 
file "master.html"; 
>><html> 
  <head> 
    <title>Master Index</title> 
  </head> 
  <body bgcolor="$bgcolor1" text=#0000ff link=#0020ff vlink=#0020ff> 
    <center><img src="${image_directory}ScanDocSmall.jpg" border="0" /></center> 
    <p> 
    <a href="packages.html" target="Documentation">Master Index</a> 
    </p> 
    <p> 
      <font size="2"> 
        <nobr> 
<< 
 
## For each package, generate an index entry. 
 
foreach $p (packages()) { 
  $_ = $p->url; 
  s/\s/%20/g; 
  >><a href="$_" target="Documentation"><b>$(p.name)</b></a><br> 
    <dir> 
  << 
  foreach $e ($p->classes()) { 
    $_ = $e->url; 
    s/\s/%20/g; 
    >><li><a href="$_" target="Documentation">$(e.fullname)</a> 
    << 
  } 
  foreach $e ($p->globals()) { 
    $_ = $e->url; 
    s/\s/%20/g; 
    >><li><a href="$_" target="Documentation">$(e.fullname)</a> 
    << 
  } 
  >></dir><< 
} 
 
>> 
          <a href="to-do.html" target="Documentation"><b>To-Do List</b></a><br> 
        </nobr> 
      </font> 
    </p> 
  </body> 
</html> 
<< 
 
###################################################################### 
 
## Begin generating package index file 
 
file "packages.html"; 
>><html> 
  <head> 
    <title>$project_name -- Packages</title> 
  </head> 
  <body bgcolor="$bgcolor2"> 
 
    <center>$company_logo 
    <h1>Documentation for $project_name</h1> 
    </center> 
    <h2>Package List</h2> 
<< 
 
## For each package, generate an index entry. 
 
foreach $p (packages()) { 
  $_ = $p->url; 
  s/\s/%20/g; 
  >><a href = "$_">$(p.name)</a><br> 
  << 
} 
 
>> 
    <p> 
    <hr size=4> 
    $copyright<br> 
    Generated by <a href="$scandocURL"><b>ScanDoc $majorVersion.$minorVersion</b></a><br> 
    Last Updated: $date<br> 
  </body> 
</html> 
 
<< 
 
###################################################################### 
 
## Generate "To-do list" 
 
file "to-do.html"; 
>><html> 
  <head> 
    <title>$project_name -- To-Do list</title> 
  </head> 
  <body bgcolor="$bgcolor2"> 
 
    $company_logo 
 
    <h1>To-do list for $project_name</h1> 
<< 
 
if (&todolistFiles()) { 
  >><hr size=4><p> 
  << 
  foreach $f (&todolistFiles()) { 
    my @m = &todolistEntries( $f ); 
    if ($f =~ /([^\/]+)$/) { $f = $1; } 
    >><b>$f:</b><ul> 
    << 
    foreach $text (@m) { 
      if ($text) { 
        print "<li>", &processDescription( $text ), "\n"; 
      } 
    } 
    >></ul> 
    << 
  } 
} 
 
>> 
    <hr size=4> 
    $copyright<br> 
    Generated by <a href="$scandocURL"><b>ScanDoc $majorVersion.$minorVersion</b></a><br> 
    Last Updated: $date<br> 
  </body> 
</html> 
<< 
 
###################################################################### 
 
## Generate individual files for each package. 
 
my $p; 
foreach $p (packages()) { 
  file $p->name() . ".html"; 
  >><html> 
  <head> 
    <title>$project_name -- $(p.name)</title> 
  </head> 
  <body bgcolor="$bgcolor2"> 
    <center> 
      <font size=6><b>$project_name</b></font> 
      <hr size=4><p> 
    </center> 
 
    <h2>Package Name: $(p.name)</h2> 
    <b> 
<< 
 
## Generate class and member index at the top of the file. 
 
foreach $c ($p->classes()) { 
  >><h3><img src="$bullet1_image" width=18 height=17 align=texttop> 
    <a href="$(c.url)">$(c.fullname)</h3></a> 
    <ul> 
  << 
  foreach $m ($c->members()) { 
    >><li><a href="$(m.url)">$(m.longname)</a> 
    << 
  } 
  >></ul> 
  << 
} 
 
>> 
</b> 
<< 
 
## Generate detailed class documentation 
foreach $c ($p->classes()) { 
 ## Output searchable keyword list 
 if ($c->keywords()) { 
   print "<!-- ", $c->keywords(), " -->\n"; 
 } 
 
 >><hr size="4"> 
   <a name="$(c.anchor)"></a> 
   <h1>$(c.fullname)</h1> 
   <table bgcolor="ffffff" border="0" cellspacing="4"> 
     <tr> 
       <th align=center colspan=2> 
       </th> 
     </tr> 
  << 
   
  # Output author tag 
  if ($c->author()) { 
    >><tr><th width=20% align=right>Author:</th><< 
    >><td>$(c.author)</td></tr><< 
  } 
 
  # Output package version 
  if ($c->version()) { 
    >><tr><th width=20% align=right>Version:</th><< 
    >><td>$(c.version)</td></tr><< 
  } 
 
  # Output Source file 
  if ($c->sourcefile()) { 
    >><tr><th width=20% align=right>Source:</th><< 
    >><td>$(c.sourcefile)</td></tr><< 
  } 
 
  # Output base class list 
  if ($c->baseclasses()) { 
    >><tr><th width=20% align=right>Base classes:</th> 
    <td><< 
    my @t = (); 
    foreach $b ($c->baseclasses()) { 
      my $name = $b->name(); 
      if ($url = $b->url()) { 
        push @t, "<a href=\"$url\">$name</a>"; 
      } 
      else { push @t, $name; } 
    } 
    print join( ', ', @t ); 
    >></td></tr> 
    << 
  }	 
 
  # Output subclasses list 
  if ($c->subclasses()) { 
    >><tr><th width=20% align=right>Subclasses:</th> 
      <td><< 
    my @t = (); 
    foreach $s ($c->subclasses()) { 
      my $name = $s->name(); 
      if ($url = $s->url()) { 
        push @t, "<a href=\"$url\">$name</a>"; 
      } 
      else { push @t, $name; } 
    } 
    print join( ', ', @t ); 
    >></td></tr><< 
  } 
 
  # Output main class description 
  >></tr> 
  </table> 
  <p> 
  << 
  print &processDescription( $c->description() ); 
	 
  # Output "see also" information 
  if ($c->seealso()) { 
    >><p><dt><b>See Also</b><dd> 
    << 
    my @r = (); 
    foreach $a ($c->seealso()) { 
      my $name = $a->name(); 
      if ($url = $a->url()) { 
        push @r, "<a href=\"$url\">$name</a>"; 
      } 
      else { push @r, $name; } 
    } 
    print join( ',', @r ); 
    >><p> 
    << 
  } 
 
  # Output class member index 
  if ($c->members()) { 
    print "<h2>Member Index</h2>\n"; 
    print "<ul>"; 
    foreach $m ($c->members()) { 
      >><li><a href="$(m.url)">$(m.fullname)</a> 
	<< 
    } 
    >></ul><< 
  } 
  
  # Output class member variable documentation 
  if ($c->membervars()) { 
    print "<h2>Class Variables</h2>\n"; 
    print "<blockquote>\n"; 
    foreach $m ($c->membervars()) { &variable( $m ); } 
    print "</blockquote>\n"; 
  } 
 
  # Output class member function documentation 
  if ($c->memberfuncs()) { 
    print "<h2>Class Methods</h2>\n"; 
    print "<blockquote>\n"; 
    foreach $m ($c->memberfuncs()) { &function( $m ); } 
    print "</blockquote>\n"; 
  } 
} 
 
# Output global variables 
if ($p->globalvars()) { 
  >><h2>Global Variables</h2> 
    <blockquote> 
  << 
  foreach $m ($p->globalvars()) { &variable( $m ); } 
  print "</blockquote>\n"; 
} 
 
# Output global functions 
if ($p->globalfuncs()) { 
  >><h2>Global Functions</h2> 
    <blockquote> 
  << 
  foreach $m ($p->globalfuncs()) { &function( $m ); } 
  print "</blockquote>\n"; 
} 
 
>> 
    <hr size=4> 
    $copyright<br> 
    Generated by <a href="$scandocURL"><b>ScanDoc $majorVersion.$minorVersion</b></a><br> 
    Last Updated: $date<br> 
  </body> 
</html> 
<< 
} # end of foreach (packages) loop 
 
###################################################################### 
 
## Subroutine to generate documentation for a member function or global function 
 
sub function { 
  local ($f) = @_; 
   
  if ($f->keywords()) { 
    >><!-- $(f.keywords) --> 
      << 
  } 
  >> 
  <a name="$(f.anchor)"></a> 
  <dl> 
    <dt> 
     <b><img src="$bullet2_image" width=19 height=17 align=texttop>$(f.fullname);</b> 
    <dd> 
  << 
  print &processDescription( $f->description() ); 
  >> 
  <p><dl> 
  << 
  if ($f->params()) { 
    >> 
      <dt><b>Parameters</b><dd> 
	<table width="85%"> 
    << 
    foreach $a ($f->params()) { 
      >><tr valign=top><th align=right> 
	$(a.name)</th><td><< 
      print &processDescription( $a->description() ); 
      >></td></tr> 
      << 
    } 
    >></table> 
      << 
  } 
	 
  if ($f->returnValue()) { 
    >><dt><b>Return Value</b> 
      <dd><< 
    print &processDescription( $f->returnValue() ); 
    >><p><< 
  } 
   
  if ($f->exceptions()) { 
    >><dt><b>Exceptions</b><dd> 
      <table width=85%><tr><td colspan=2><hr size=3></td></tr> 
    << 
    foreach $a ($f->exceptions()) { 
      >><tr valign=top><th align=right> 
	$(a.name)</th><td><< 
	  print &processDescription( $a->description() ); 
      >></td></tr> 
      << 
    } 
    >><tr><td colspan=2><hr size=3></td></tr></table> 
    << 
  } 
	 
  if ($f->seealso()) { 
    >><dt><b>See Also</b><dd> 
      << 
    my @r = (); 
    foreach $a ($f->seealso()) { 
      my $name = $a->name(); 
      if ($url = $a->url()) { 
	push @r, "<a href=\"$url\">$name</a>"; 
      } 
      else { push @r, $name; } 
    } 
    print join( ',', @r ); 
    >><p><< 
  } 
  >></dl></dl> 
  << 
} 
 
###################################################################### 
 
## Subroutine to generate documentation for a member variable or global variable. 
 
sub variable { 
  local ($v) = @_; 
   
  if ($v->keywords()) { 
    print "<!-- $(v.keywords) -->"; 
  } 
 
  >> 
    <a name="$(v.name)"></a> 
      <dl><dt> 
	<b><img src="$bullet2_image" width=19 height=17 align=texttop>$(v.fullname);</b> 
  <dd> 
  <<print &processDescription( $v->description() );>> 
  <p><dl> 
  << 
  if ($v->seealso()) { 
    >><dt><b>See Also</b><dd> 
      << 
	$comma = 0; 
    foreach $a ($v->seealso()) { 
      if ($comma) { print ","; } 
      $comma = 1; 
      >><a href="$(a.url)">$(a.name)</a> 
	<< 
    } 
    >><p> 
    << 
  } 
  >></dl></dl> 
  << 
} 
 
###################################################################### 
 
sub processDescription { 
  local ($_) = @_; 
   
  s/^\s+//;				# Remove whitespace from beginning 
  s/\s+$/\n/;				# Remove whitespace from end 
  s/\n\n/<p>\n/g;			# Replace multiple CR's with paragraph markers 
  s:\@heading(.*)\n:<p><h2>$1</h2>:;	# Handle heading text 
   
  # Handle embedded image tags 
  s:\@caution:<p><img src=\"${image_directory}/caution.gif\" align=left>:; 
  s:\@warning:<p><img src=\"${image_directory}/warning.gif\" align=left>:; 
  s:\@bug:<p><img src=\"${image_directory}/bug.gif\">:; 
  s:\@tip:<p><img src=\"${image_directory}/tip.gif\">:; 
 
  return $_; 
}