| << | |
| # 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 $_; | |
| } |