diff docs/scripts/html/code/TextFilesToHTML.html @ 0:4816e4a8ae95 draft default tip

Uploaded
author deepakjadmin
date Wed, 20 Jan 2016 09:23:18 -0500
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/scripts/html/code/TextFilesToHTML.html	Wed Jan 20 09:23:18 2016 -0500
@@ -0,0 +1,1026 @@
+<html>
+<head>
+<title>MayaChemTools:Code:TextFilesToHTML.pl</title>
+<meta http-equiv="content-type" content="text/html;charset=utf-8">
+<link rel="stylesheet" type="text/css" href="../../../css/MayaChemToolsCode.css">
+</head>
+<body leftmargin="20" rightmargin="20" topmargin="10" bottommargin="10">
+<br/>
+<center>
+<a href="http://www.mayachemtools.org" title="MayaChemTools Home"><img src="../../../images/MayaChemToolsLogo.gif" border="0" alt="MayaChemTools"></a>
+</center>
+<br/>
+<pre>
+   1 #!/usr/bin/perl -w
+   2 <span class="c">#</span>
+   3 <span class="c"># $RCSfile: TextFilesToHTML.pl,v $</span>
+   4 <span class="c"># $Date: 2015/02/28 20:46:21 $</span>
+   5 <span class="c"># $Revision: 1.41 $</span>
+   6 <span class="c">#</span>
+   7 <span class="c"># Author: Manish Sud &lt;msud@san.rr.com&gt;</span>
+   8 <span class="c">#</span>
+   9 <span class="c"># Copyright (C) 2015 Manish Sud. All rights reserved.</span>
+  10 <span class="c">#</span>
+  11 <span class="c"># This file is part of MayaChemTools.</span>
+  12 <span class="c">#</span>
+  13 <span class="c"># MayaChemTools is free software; you can redistribute it and/or modify it under</span>
+  14 <span class="c"># the terms of the GNU Lesser General Public License as published by the Free</span>
+  15 <span class="c"># Software Foundation; either version 3 of the License, or (at your option) any</span>
+  16 <span class="c"># later version.</span>
+  17 <span class="c">#</span>
+  18 <span class="c"># MayaChemTools is distributed in the hope that it will be useful, but without</span>
+  19 <span class="c"># any warranty; without even the implied warranty of merchantability of fitness</span>
+  20 <span class="c"># for a particular purpose.  See the GNU Lesser General Public License for more</span>
+  21 <span class="c"># details.</span>
+  22 <span class="c">#</span>
+  23 <span class="c"># You should have received a copy of the GNU Lesser General Public License</span>
+  24 <span class="c"># along with MayaChemTools; if not, see &lt;http://www.gnu.org/licenses/&gt; or</span>
+  25 <span class="c"># write to the Free Software Foundation Inc., 59 Temple Place, Suite 330,</span>
+  26 <span class="c"># Boston, MA, 02111-1307, USA.</span>
+  27 <span class="c">#</span>
+  28 
+  29 <span class="k">use</span> <span class="w">strict</span><span class="sc">;</span>
+  30 <span class="k">use</span> <span class="w">FindBin</span><span class="sc">;</span> <span class="k">use</span> <span class="w">lib</span> <span class="q">&quot;$FindBin::Bin/../lib&quot;</span><span class="sc">;</span>
+  31 <span class="k">use</span> <span class="w">Getopt::Long</span><span class="sc">;</span>
+  32 <span class="k">use</span> <span class="w">File::Basename</span><span class="sc">;</span>
+  33 <span class="k">use</span> <span class="w">Text::ParseWords</span><span class="sc">;</span>
+  34 <span class="k">use</span> <span class="w">Benchmark</span><span class="sc">;</span>
+  35 <span class="k">use</span> <span class="w">FileUtil</span><span class="sc">;</span>
+  36 <span class="k">use</span> <span class="w">TextUtil</span><span class="sc">;</span>
+  37 <span class="k">use</span> <span class="w">HTMLUtil</span><span class="sc">;</span>
+  38 
+  39 <span class="k">my</span><span class="s">(</span><span class="i">$ScriptName</span><span class="cm">,</span> <span class="i">%Options</span><span class="cm">,</span> <span class="i">$StartTime</span><span class="cm">,</span> <span class="i">$EndTime</span><span class="cm">,</span> <span class="i">$TotalTime</span><span class="s">)</span><span class="sc">;</span>
+  40 
+  41 <span class="c"># Autoflush STDOUT</span>
+  42 <span class="i">$|</span> = <span class="n">1</span><span class="sc">;</span>
+  43 
+  44 <span class="c"># Starting message...</span>
+  45 <span class="i">$ScriptName</span> = <span class="i">basename</span><span class="s">(</span><span class="i">$0</span><span class="s">)</span><span class="sc">;</span>
+  46 <span class="k">print</span> <span class="q">&quot;\n$ScriptName: Starting...\n\n&quot;</span><span class="sc">;</span>
+  47 <span class="i">$StartTime</span> = <span class="w">new</span> <span class="w">Benchmark</span><span class="sc">;</span>
+  48 
+  49 <span class="c"># Get the options and setup script...</span>
+  50 <span class="i">SetupScriptUsage</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+  51 <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">help</span>} || <span class="i">@ARGV</span> &lt; <span class="n">1</span><span class="s">)</span> <span class="s">{</span>
+  52   <span class="k">die</span> <span class="i">GetUsageFromPod</span><span class="s">(</span><span class="q">&quot;$FindBin::Bin/$ScriptName&quot;</span><span class="s">)</span><span class="sc">;</span>
+  53 <span class="s">}</span>
+  54 
+  55 <span class="k">my</span><span class="s">(</span><span class="i">@TextFilesList</span><span class="s">)</span><span class="sc">;</span>
+  56 <span class="i">@TextFilesList</span> = <span class="i">ExpandFileNames</span><span class="s">(</span>\<span class="i">@ARGV</span><span class="cm">,</span> <span class="q">&quot;csv tsv&quot;</span><span class="s">)</span><span class="sc">;</span>
+  57 
+  58 <span class="k">print</span> <span class="q">&quot;Processing options...\n&quot;</span><span class="sc">;</span>
+  59 <span class="k">my</span><span class="s">(</span><span class="i">%OptionsInfo</span><span class="s">)</span><span class="sc">;</span>
+  60 <span class="i">ProcessOptions</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+  61 
+  62 <span class="k">print</span> <span class="q">&quot;Checking input text file(s)...\n&quot;</span><span class="sc">;</span>
+  63 <span class="k">my</span><span class="s">(</span><span class="i">%TextFilesInfo</span><span class="s">)</span><span class="sc">;</span>
+  64 <span class="i">RetrieveTextFilesInfo</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+  65 <span class="i">SetupCoulmnsTablesAndMiscInfo</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+  66 
+  67 <span class="c"># Generate output files...</span>
+  68 <span class="k">my</span><span class="s">(</span><span class="i">$FileIndex</span><span class="s">)</span><span class="sc">;</span>
+  69 <span class="k">if</span> <span class="s">(</span><span class="i">@TextFilesList</span> &gt; <span class="n">1</span><span class="s">)</span> <span class="s">{</span>
+  70   <span class="k">print</span> <span class="q">&quot;\nProcessing text files...\n&quot;</span><span class="sc">;</span>
+  71 <span class="s">}</span>
+  72 <span class="k">for</span> <span class="i">$FileIndex</span> <span class="s">(</span><span class="n">0</span> .. <span class="i">$#TextFilesList</span><span class="s">)</span> <span class="s">{</span>
+  73   <span class="k">if</span> <span class="s">(</span><span class="i">$TextFilesInfo</span>{<span class="w">FileOkay</span>}[<span class="i">$FileIndex</span>]<span class="s">)</span> <span class="s">{</span>
+  74     <span class="k">print</span> <span class="q">&quot;\nProcessing file $TextFilesList[$FileIndex]...\n&quot;</span><span class="sc">;</span>
+  75     <span class="i">GenerateHTMLTable</span><span class="s">(</span><span class="i">$FileIndex</span><span class="s">)</span><span class="sc">;</span>
+  76   <span class="s">}</span>
+  77 <span class="s">}</span>
+  78 <span class="k">print</span> <span class="q">&quot;\n$ScriptName:Done...\n\n&quot;</span><span class="sc">;</span>
+  79 
+  80 <span class="i">$EndTime</span> = <span class="w">new</span> <span class="w">Benchmark</span><span class="sc">;</span>
+  81 <span class="i">$TotalTime</span> = <span class="w">timediff</span> <span class="s">(</span><span class="i">$EndTime</span><span class="cm">,</span> <span class="i">$StartTime</span><span class="s">)</span><span class="sc">;</span>
+  82 <span class="k">print</span> <span class="q">&quot;Total time: &quot;</span><span class="cm">,</span> <span class="i">timestr</span><span class="s">(</span><span class="i">$TotalTime</span><span class="s">)</span><span class="cm">,</span> <span class="q">&quot;\n&quot;</span><span class="sc">;</span>
+  83 
+  84 <span class="c">###############################################################################</span>
+  85 
+  86 <span class="c"># Generate HTML table(s)...</span>
+<a name="GenerateHTMLTable-"></a>  87 <span class="k">sub </span><span class="m">GenerateHTMLTable</span> <span class="s">{</span>
+  88   <span class="k">my</span><span class="s">(</span><span class="i">$Index</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
+  89 
+  90   <span class="k">if</span> <span class="s">(</span><span class="i">$TextFilesInfo</span>{<span class="w">MultipleHTMLTables</span>}[<span class="i">$Index</span>]<span class="s">)</span> <span class="s">{</span>
+  91     <span class="i">GenerateMultipleHTMLTable</span><span class="s">(</span><span class="i">$Index</span><span class="s">)</span><span class="sc">;</span>
+  92   <span class="s">}</span>
+  93   <span class="k">else</span> <span class="s">{</span>
+  94     <span class="i">GenerateOneHTMLTable</span><span class="s">(</span><span class="i">$Index</span><span class="s">)</span><span class="sc">;</span>
+  95   <span class="s">}</span>
+  96 <span class="s">}</span>
+  97 
+  98 <span class="c"># Generate one table...</span>
+<a name="GenerateOneHTMLTable-"></a>  99 <span class="k">sub </span><span class="m">GenerateOneHTMLTable</span> <span class="s">{</span>
+ 100   <span class="k">my</span><span class="s">(</span><span class="i">$Index</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
+ 101   <span class="k">my</span><span class="s">(</span><span class="i">$TextFile</span><span class="cm">,</span> <span class="i">$TopHTMLDir</span><span class="cm">,</span> <span class="i">$HTMLFile</span><span class="cm">,</span> <span class="i">$Line</span><span class="cm">,</span> <span class="i">$StartRowNum</span><span class="cm">,</span> <span class="i">$EndRowNum</span><span class="cm">,</span> <span class="i">$CSSFile</span><span class="cm">,</span> <span class="i">$CSSFilePath</span><span class="cm">,</span> <span class="i">$CSSRef</span><span class="s">)</span><span class="sc">;</span>
+ 102 
+ 103   <span class="i">$HTMLFile</span> = <span class="i">$TextFilesInfo</span>{<span class="w">HTMLRoot</span>}[<span class="i">$Index</span>] . <span class="q">&quot;.html&quot;</span><span class="sc">;</span>
+ 104   <span class="i">$TextFile</span> = <span class="i">$TextFilesList</span>[<span class="i">$Index</span>]<span class="sc">;</span>
+ 105 
+ 106   <span class="c"># Setup data directories...</span>
+ 107   <span class="s">(</span><span class="i">$TopHTMLDir</span><span class="s">)</span> = <span class="i">SetupDataDirs</span><span class="s">(</span><span class="i">$Index</span><span class="s">)</span><span class="sc">;</span>
+ 108 
+ 109   <span class="c"># Setup stylesheet file...</span>
+ 110   <span class="i">$CSSRef</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+ 111   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">stylesheet</span>} =~ <span class="q">/^new$/i</span><span class="s">)</span> <span class="s">{</span>
+ 112     <span class="i">$CSSFile</span> = <span class="i">$TextFilesInfo</span>{<span class="w">HTMLRoot</span>}[<span class="i">$Index</span>] . <span class="q">&quot;.css&quot;</span><span class="sc">;</span> <span class="i">$CSSRef</span> = <span class="q">&quot;.\/&quot;</span> . <span class="q">&quot;$CSSFile&quot;</span><span class="sc">;</span>
+ 113     <span class="i">$CSSFilePath</span> = <span class="q">&quot;$TopHTMLDir&quot;</span> . <span class="q">&quot;\/&quot;</span> . <span class="i">$CSSFile</span><span class="sc">;</span>
+ 114     <span class="i">GenerateStyleSheetFile</span><span class="s">(</span><span class="i">$CSSFilePath</span><span class="s">)</span><span class="sc">;</span>
+ 115   <span class="s">}</span>
+ 116   <span class="k">elsif</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">stylesheet</span>} =~ <span class="q">/^old$/i</span><span class="s">)</span> <span class="s">{</span>
+ 117     <span class="i">$CSSRef</span> = <span class="i">$Options</span>{<span class="w">stylesheetname</span>}<span class="sc">;</span>
+ 118   <span class="s">}</span>
+ 119   <span class="c"># Set HTML file location...</span>
+ 120   <span class="i">$HTMLFile</span> = <span class="q">&quot;$TopHTMLDir&quot;</span> . <span class="q">&quot;\/&quot;</span> . <span class="i">$HTMLFile</span><span class="sc">;</span>
+ 121 
+ 122   <span class="k">print</span> <span class="q">&quot;Generating HTML file $HTMLFile...\n&quot;</span><span class="sc">;</span>
+ 123   <span class="k">open</span> <span class="w">HTMLFILE</span><span class="cm">,</span> <span class="q">&quot;&gt;$HTMLFile&quot;</span> <span class="k">or</span> <span class="k">die</span> <span class="q">&quot;Error: Can&#39;t open $HTMLFile: $! \n&quot;</span><span class="sc">;</span>
+ 124   <span class="k">open</span> <span class="w">TEXTFILE</span><span class="cm">,</span> <span class="q">&quot;$TextFile&quot;</span> <span class="k">or</span> <span class="k">die</span> <span class="q">&quot;Error: Can&#39;t open $TextFile: $! \n&quot;</span><span class="sc">;</span>
+ 125 
+ 126   <span class="c"># Write out HTML page header...</span>
+ 127   <span class="k">print</span> <span class="i">HTMLFILE</span> <span class="i">SetupHTMLPageHeader</span><span class="s">(</span><span class="i">$TextFilesInfo</span>{<span class="w">HTMLTitle</span>}[<span class="i">$Index</span>]<span class="cm">,</span> <span class="i">$CSSRef</span><span class="s">)</span><span class="sc">;</span>
+ 128   <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">TitleDisplay</span>}<span class="s">)</span> <span class="s">{</span>
+ 129     <span class="k">print</span> <span class="i">HTMLFILE</span> <span class="i">SetupHTMLPageTitle</span><span class="s">(</span><span class="i">$TextFilesInfo</span>{<span class="w">HTMLTitle</span>}[<span class="i">$Index</span>]<span class="s">)</span><span class="sc">;</span>
+ 130   <span class="s">}</span>
+ 131   <span class="k">else</span> <span class="s">{</span>
+ 132     <span class="k">print</span> <span class="i">HTMLFILE</span> <span class="i">SetupHTMLEmptyLines</span><span class="s">(</span><span class="n">1</span><span class="s">)</span><span class="sc">;</span>
+ 133   <span class="s">}</span>
+ 134 
+ 135   <span class="c"># Start the table...</span>
+ 136   <span class="k">print</span> <span class="i">HTMLFILE</span> <span class="i">SetupHTMLAlignmentBegin</span><span class="s">(</span><span class="q">&quot;center&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 137   <span class="k">print</span> <span class="i">HTMLFILE</span> <span class="i">SetupHTMLTableHeader</span><span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">TableBorder</span>}<span class="cm">,</span> <span class="i">$OptionsInfo</span>{<span class="w">TableCellPadding</span>}<span class="cm">,</span> <span class="i">$OptionsInfo</span>{<span class="w">TableCellSpacing</span>}<span class="s">)</span><span class="sc">;</span>
+ 138 
+ 139   <span class="i">WriteColLabels</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> \<span class="i">*TEXTFILE</span><span class="cm">,</span> \<span class="i">*HTMLFILE</span><span class="s">)</span><span class="sc">;</span>
+ 140 
+ 141   <span class="c"># Skip the labels and write out all the other rows...</span>
+ 142   <span class="i">$Line</span> = <span class="q">&lt;TEXTFILE&gt;</span><span class="sc">;</span>
+ 143   <span class="i">$StartRowNum</span> = <span class="n">1</span><span class="sc">;</span>
+ 144   <span class="i">$EndRowNum</span> = <span class="i">$TextFilesInfo</span>{<span class="w">LineCount</span>}[<span class="i">$Index</span>]<span class="sc">;</span>
+ 145   <span class="i">WriteRowValues</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$StartRowNum</span><span class="cm">,</span> <span class="i">$EndRowNum</span><span class="cm">,</span> \<span class="i">*TEXTFILE</span><span class="cm">,</span> \<span class="i">*HTMLFILE</span><span class="s">)</span><span class="sc">;</span>
+ 146 
+ 147   <span class="c"># Finish up the table...</span>
+ 148   <span class="k">print</span> <span class="i">HTMLFILE</span> <span class="i">SetupHTMLTableEnd</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 149   <span class="k">print</span> <span class="i">HTMLFILE</span> <span class="i">SetupHTMLAlignmentEnd</span><span class="s">(</span><span class="q">&quot;center&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 150 
+ 151   <span class="c"># Write out HTML page end...</span>
+ 152   <span class="k">print</span> <span class="i">HTMLFILE</span> <span class="i">SetupHTMLPageEnd</span><span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">Footer</span>}<span class="s">)</span><span class="sc">;</span>
+ 153 
+ 154   <span class="k">close</span> <span class="w">HTMLFILE</span><span class="sc">;</span>
+ 155   <span class="k">close</span> <span class="w">TEXTFILE</span><span class="sc">;</span>
+ 156 <span class="s">}</span>
+ 157 
+ 158 <span class="c"># Generate multiple tables...</span>
+<a name="GenerateMultipleHTMLTable-"></a> 159 <span class="k">sub </span><span class="m">GenerateMultipleHTMLTable</span> <span class="s">{</span>
+ 160   <span class="k">my</span><span class="s">(</span><span class="i">$Index</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
+ 161   <span class="k">my</span><span class="s">(</span><span class="i">$TopHTMLDir</span><span class="cm">,</span> <span class="i">$SubHTMLDir</span><span class="cm">,</span> <span class="i">$TextFile</span><span class="cm">,</span> <span class="i">$HTMLFile</span><span class="cm">,</span> <span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$TableCount</span><span class="cm">,</span> <span class="i">$TableIndex</span><span class="cm">,</span> <span class="i">$TableStartLineNum</span><span class="cm">,</span> <span class="i">$TableEndLineNum</span><span class="cm">,</span> <span class="i">$Line</span><span class="cm">,</span> <span class="i">$InSubHTMLDir</span><span class="cm">,</span> <span class="i">$PrintMsg</span><span class="cm">,</span> <span class="i">$CSSFile</span><span class="cm">,</span> <span class="i">$CSSFilePath</span><span class="cm">,</span> <span class="i">$CSSRef</span><span class="cm">,</span> <span class="i">$NewStyleSheet</span><span class="s">)</span><span class="sc">;</span>
+ 162 
+ 163   <span class="c"># Open text file and skip over label line...</span>
+ 164   <span class="i">$TextFile</span> = <span class="i">$TextFilesList</span>[<span class="i">$Index</span>]<span class="sc">;</span>
+ 165   <span class="k">open</span> <span class="w">TEXTFILE</span><span class="cm">,</span> <span class="q">&quot;$TextFile&quot;</span> <span class="k">or</span> <span class="k">die</span> <span class="q">&quot;Error: Can&#39;t open $TextFile: $! \n&quot;</span><span class="sc">;</span>
+ 166   <span class="i">$Line</span> = <span class="q">&lt;TEXTFILE&gt;</span><span class="sc">;</span>
+ 167 
+ 168   <span class="c"># Set up data directories to hold various html files...</span>
+ 169   <span class="s">(</span><span class="i">$TopHTMLDir</span><span class="cm">,</span> <span class="i">$SubHTMLDir</span><span class="s">)</span> = <span class="i">SetupDataDirs</span><span class="s">(</span><span class="i">$Index</span><span class="s">)</span><span class="sc">;</span>
+ 170 
+ 171   <span class="c"># Create stylesheet file...</span>
+ 172   <span class="i">$CSSRef</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+ 173   <span class="i">$NewStyleSheet</span> = <span class="n">0</span><span class="sc">;</span>
+ 174   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">stylesheet</span>} =~ <span class="q">/^new$/i</span><span class="s">)</span> <span class="s">{</span>
+ 175     <span class="i">$NewStyleSheet</span> = <span class="n">1</span><span class="sc">;</span>
+ 176     <span class="i">$CSSFile</span> = <span class="i">$TextFilesInfo</span>{<span class="w">HTMLRoot</span>}[<span class="i">$Index</span>] . <span class="q">&quot;.css&quot;</span><span class="sc">;</span>
+ 177     <span class="i">$CSSFilePath</span> = <span class="q">&quot;$TopHTMLDir&quot;</span> . <span class="q">&quot;\/&quot;</span> . <span class="i">$CSSFile</span><span class="sc">;</span>
+ 178     <span class="i">GenerateStyleSheetFile</span><span class="s">(</span><span class="i">$CSSFilePath</span><span class="s">)</span><span class="sc">;</span>
+ 179   <span class="s">}</span>
+ 180   <span class="k">elsif</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">stylesheet</span>} =~ <span class="q">/^old$/i</span><span class="s">)</span> <span class="s">{</span>
+ 181     <span class="i">$CSSRef</span> = <span class="i">$Options</span>{<span class="w">stylesheetname</span>}<span class="sc">;</span>
+ 182   <span class="s">}</span>
+ 183 
+ 184   <span class="i">$PrintMsg</span> = <span class="n">1</span><span class="sc">;</span>
+ 185   <span class="c"># Generate HTML files for all the tables...</span>
+ 186   <span class="i">$TableCount</span> = <span class="i">$TextFilesInfo</span>{<span class="w">TableCount</span>}[<span class="i">$Index</span>]<span class="sc">;</span>
+ 187   <span class="k">for</span> <span class="i">$TableNum</span> <span class="s">(</span><span class="n">1</span> .. <span class="i">$TableCount</span><span class="s">)</span> <span class="s">{</span>
+ 188     <span class="i">$TableIndex</span> = <span class="i">$TableNum</span> - <span class="n">1</span><span class="sc">;</span>
+ 189     <span class="i">$HTMLFile</span> = <span class="i">$</span>{<span class="i">$TextFilesInfo</span>{<span class="w">TableHTMLFiles</span>}[<span class="i">$Index</span>]}[<span class="i">$TableIndex</span>]<span class="sc">;</span>
+ 190     <span class="i">$TableStartLineNum</span> = <span class="i">$</span>{<span class="i">$TextFilesInfo</span>{<span class="w">TableStartLineNum</span>}[<span class="i">$Index</span>]}[<span class="i">$TableIndex</span>]<span class="sc">;</span>
+ 191     <span class="i">$TableEndLineNum</span> = <span class="i">$</span>{<span class="i">$TextFilesInfo</span>{<span class="w">TableEndLineNum</span>}[<span class="i">$Index</span>]}[<span class="i">$TableIndex</span>]<span class="sc">;</span>
+ 192 
+ 193     <span class="c"># Setup file name...</span>
+ 194     <span class="k">if</span> <span class="s">(</span><span class="i">$TableNum</span> == <span class="n">1</span><span class="s">)</span> <span class="s">{</span>
+ 195       <span class="i">$HTMLFile</span> = <span class="q">&quot;$TopHTMLDir&quot;</span> . <span class="q">&quot;\/&quot;</span> . <span class="i">$HTMLFile</span><span class="sc">;</span>
+ 196       <span class="k">print</span> <span class="q">&quot;Generating HTML file $HTMLFile...\n&quot;</span><span class="sc">;</span>
+ 197     <span class="s">}</span>
+ 198     <span class="k">else</span> <span class="s">{</span>
+ 199       <span class="i">$HTMLFile</span> = <span class="q">&quot;$SubHTMLDir&quot;</span> . <span class="q">&quot;\/&quot;</span> . <span class="i">$HTMLFile</span><span class="sc">;</span>
+ 200       <span class="k">if</span> <span class="s">(</span><span class="i">$PrintMsg</span><span class="s">)</span> <span class="s">{</span>
+ 201         <span class="i">$PrintMsg</span> = <span class="n">0</span><span class="sc">;</span>
+ 202         <span class="k">if</span> <span class="s">(</span><span class="i">$TableCount</span> == <span class="n">2</span><span class="s">)</span> <span class="s">{</span>
+ 203           <span class="k">print</span> <span class="q">&quot;Generating HTML file $HTMLFile...\n&quot;</span><span class="sc">;</span>
+ 204         <span class="s">}</span>
+ 205         <span class="k">else</span> <span class="s">{</span>
+ 206           <span class="k">print</span> <span class="q">&quot;Generating &quot;</span><span class="cm">,</span> <span class="s">(</span><span class="i">$TableCount</span> - <span class="n">1</span><span class="s">)</span><span class="cm">,</span> <span class="q">&quot; other HTML files: $SubHTMLDir\/$TextFilesInfo{HTMLRoot}[$Index]\*.html...\n&quot;</span><span class="sc">;</span>
+ 207         <span class="s">}</span>
+ 208       <span class="s">}</span>
+ 209     <span class="s">}</span>
+ 210     <span class="c"># Setup stylesheet reference...</span>
+ 211     <span class="k">if</span> <span class="s">(</span><span class="i">$NewStyleSheet</span><span class="s">)</span> <span class="s">{</span>
+ 212       <span class="i">$CSSRef</span> = <span class="s">(</span><span class="i">$TableNum</span> == <span class="n">1</span><span class="s">)</span> ? <span class="q">&quot;.\/&quot;</span> <span class="co">:</span> <span class="q">&quot;..\/&quot;</span><span class="sc">;</span>
+ 213       <span class="i">$CSSRef</span> .= <span class="i">$CSSFile</span><span class="sc">;</span>
+ 214     <span class="s">}</span>
+ 215 
+ 216     <span class="k">open</span> <span class="w">HTMLFILE</span><span class="cm">,</span> <span class="q">&quot;&gt;$HTMLFile&quot;</span> <span class="k">or</span> <span class="k">die</span> <span class="q">&quot;Error: Can&#39;t open $HTMLFile: $! \n&quot;</span><span class="sc">;</span>
+ 217     <span class="c"># Write out HTML page header...</span>
+ 218     <span class="k">print</span> <span class="i">HTMLFILE</span> <span class="i">SetupHTMLPageHeader</span><span class="s">(</span><span class="i">$TextFilesInfo</span>{<span class="w">HTMLTitle</span>}[<span class="i">$Index</span>]<span class="cm">,</span> <span class="i">$CSSRef</span><span class="s">)</span><span class="sc">;</span>
+ 219 
+ 220     <span class="c"># Set up the navigation links for this table...</span>
+ 221     <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">NavLinksAtTop</span>}<span class="s">)</span> <span class="s">{</span>
+ 222       <span class="i">WriteNavigationLinks</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$TableNum</span><span class="cm">,</span> \<span class="i">*HTMLFILE</span><span class="s">)</span><span class="sc">;</span>
+ 223     <span class="s">}</span>
+ 224     <span class="c"># Setup page title...</span>
+ 225     <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">TitleDisplay</span>}<span class="s">)</span> <span class="s">{</span>
+ 226       <span class="k">print</span> <span class="i">HTMLFILE</span> <span class="i">SetupHTMLPageTitle</span><span class="s">(</span><span class="i">$TextFilesInfo</span>{<span class="w">HTMLTitle</span>}[<span class="i">$Index</span>]<span class="s">)</span><span class="sc">;</span>
+ 227     <span class="s">}</span>
+ 228     <span class="k">else</span> <span class="s">{</span>
+ 229       <span class="k">print</span> <span class="i">HTMLFILE</span> <span class="i">SetupHTMLEmptyLines</span><span class="s">(</span><span class="n">1</span><span class="s">)</span><span class="sc">;</span>
+ 230     <span class="s">}</span>
+ 231 
+ 232     <span class="c"># Start the table...</span>
+ 233     <span class="k">print</span> <span class="i">HTMLFILE</span> <span class="i">SetupHTMLAlignmentBegin</span><span class="s">(</span><span class="q">&quot;center&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 234     <span class="k">print</span> <span class="i">HTMLFILE</span> <span class="i">SetupHTMLTableHeader</span><span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">TableBorder</span>}<span class="cm">,</span> <span class="i">$OptionsInfo</span>{<span class="w">TableCellPadding</span>}<span class="cm">,</span> <span class="i">$OptionsInfo</span>{<span class="w">TableCellSpacing</span>}<span class="s">)</span><span class="sc">;</span>
+ 235 
+ 236     <span class="i">WriteColLabels</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> \<span class="i">*TEXTFILE</span><span class="cm">,</span> \<span class="i">*HTMLFILE</span><span class="s">)</span><span class="sc">;</span>
+ 237 
+ 238     <span class="c"># Write out appropriate row data for this table...</span>
+ 239     <span class="i">WriteRowValues</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$TableStartLineNum</span><span class="cm">,</span> <span class="i">$TableEndLineNum</span><span class="cm">,</span> \<span class="i">*TEXTFILE</span><span class="cm">,</span> \<span class="i">*HTMLFILE</span><span class="s">)</span><span class="sc">;</span>
+ 240 
+ 241     <span class="c"># Finish up the table...</span>
+ 242     <span class="k">print</span> <span class="i">HTMLFILE</span> <span class="i">SetupHTMLTableEnd</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 243     <span class="k">print</span> <span class="i">HTMLFILE</span> <span class="i">SetupHTMLAlignmentEnd</span><span class="s">(</span><span class="q">&quot;center&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 244 
+ 245     <span class="c"># Set up the navigation links for this table...</span>
+ 246     <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">NavLinksAtBottom</span>}<span class="s">)</span> <span class="s">{</span>
+ 247       <span class="k">print</span> <span class="i">HTMLFILE</span> <span class="i">SetupHTMLEmptyLines</span><span class="s">(</span><span class="n">1</span><span class="s">)</span><span class="sc">;</span>
+ 248       <span class="i">WriteNavigationLinks</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$TableNum</span><span class="cm">,</span> \<span class="i">*HTMLFILE</span><span class="s">)</span><span class="sc">;</span>
+ 249     <span class="s">}</span>
+ 250 
+ 251     <span class="c"># Write out HTML page end...</span>
+ 252     <span class="k">print</span> <span class="i">HTMLFILE</span> <span class="i">SetupHTMLPageEnd</span><span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">Footer</span>}<span class="s">)</span><span class="sc">;</span>
+ 253     <span class="k">close</span> <span class="w">HTMLFILE</span><span class="sc">;</span>
+ 254   <span class="s">}</span>
+ 255   <span class="k">close</span> <span class="w">TEXTFILE</span><span class="sc">;</span>
+ 256 
+ 257 <span class="s">}</span>
+ 258 
+ 259 <span class="c"># Create stylesheet file...</span>
+<a name="GenerateStyleSheetFile-"></a> 260 <span class="k">sub </span><span class="m">GenerateStyleSheetFile</span> <span class="s">{</span>
+ 261   <span class="k">my</span><span class="s">(</span><span class="i">$CSSFile</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
+ 262     <span class="k">print</span> <span class="q">&quot;Generating stylesheet file $CSSFile...\n&quot;</span><span class="sc">;</span>
+ 263     <span class="k">open</span> <span class="w">CSSFILE</span><span class="cm">,</span> <span class="q">&quot;&gt;$CSSFile&quot;</span> <span class="k">or</span> <span class="k">die</span> <span class="q">&quot;Error: Can&#39;t open $CSSFile: $! \n&quot;</span><span class="sc">;</span>
+ 264     <span class="k">print</span> <span class="i">CSSFILE</span> <span class="i">SetupHTMLStyleSheetTags</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 265     <span class="k">close</span> <span class="w">CSSFILE</span><span class="sc">;</span>
+ 266 <span class="s">}</span>
+ 267 
+ 268 <span class="c"># Write out table header using column labels...</span>
+<a name="WriteColLabels-"></a> 269 <span class="k">sub </span><span class="m">WriteColLabels</span> <span class="s">{</span>
+ 270   <span class="k">my</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$TextFileRef</span><span class="cm">,</span> <span class="i">$HTMLFileRef</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
+ 271   <span class="k">my</span><span class="s">(</span><span class="i">@ColLabels</span><span class="cm">,</span> <span class="i">$Label</span><span class="s">)</span><span class="sc">;</span>
+ 272 
+ 273   <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">$TextFilesInfo</span>{<span class="w">TableRowHeaderTags</span>}<span class="sc">;</span>
+ 274 
+ 275   <span class="i">@ColLabels</span> = <span class="i">@</span>{<span class="i">$TextFilesInfo</span>{<span class="w">ColLabels</span>}[<span class="i">$Index</span>]}<span class="sc">;</span>
+ 276   <span class="k">for</span> <span class="i">$Label</span> <span class="s">(</span><span class="i">@ColLabels</span><span class="s">)</span> <span class="s">{</span>
+ 277     <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowHeaderValue</span><span class="s">(</span><span class="i">$Label</span><span class="s">)</span><span class="sc">;</span>
+ 278   <span class="s">}</span>
+ 279   <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">$TextFilesInfo</span>{<span class="w">RowEndTags</span>}<span class="sc">;</span>
+ 280 <span class="s">}</span>
+ 281 
+ 282 <span class="c">#Write out the rows value...</span>
+<a name="WriteRowValues-"></a> 283 <span class="k">sub </span><span class="m">WriteRowValues</span> <span class="s">{</span>
+ 284   <span class="k">my</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$StartRowNum</span><span class="cm">,</span> <span class="i">$EndRowNum</span><span class="cm">,</span> <span class="i">$TextFileRef</span><span class="cm">,</span> <span class="i">$HTMLFileRef</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
+ 285   <span class="k">my</span><span class="s">(</span><span class="i">$ColNum</span><span class="cm">,</span> <span class="i">$BackgroundColor</span><span class="cm">,</span> <span class="i">$FontColor</span><span class="cm">,</span> <span class="i">$LineCount</span><span class="cm">,</span> <span class="i">$Line</span><span class="cm">,</span> <span class="i">@RowValues</span><span class="cm">,</span> <span class="i">$Value</span><span class="cm">,</span> <span class="i">$InDelim</span><span class="cm">,</span> <span class="i">$LastColNum</span><span class="s">)</span><span class="sc">;</span>
+ 286 
+ 287   <span class="i">$InDelim</span> = <span class="i">$TextFilesInfo</span>{<span class="w">InDelim</span>}[<span class="i">$Index</span>]<span class="sc">;</span>
+ 288   <span class="i">$LastColNum</span> = <span class="i">@</span>{<span class="i">$TextFilesInfo</span>{<span class="w">ColLabels</span>}[<span class="i">$Index</span>]} - <span class="n">1</span><span class="sc">;</span>
+ 289 
+ 290   <span class="k">for</span> <span class="i">$LineCount</span> <span class="s">(</span><span class="i">$StartRowNum</span> .. <span class="i">$EndRowNum</span><span class="s">)</span> <span class="s">{</span>
+ 291     <span class="i">$Line</span> = <span class="i">GetTextLine</span><span class="s">(</span><span class="i">$TextFileRef</span><span class="s">)</span><span class="sc">;</span>
+ 292 
+ 293     <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">ShadeRowsStatus</span>}<span class="s">)</span> <span class="s">{</span>
+ 294       <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="s">(</span><span class="i">$LineCount</span> % <span class="n">2</span><span class="s">)</span> ? <span class="i">$TextFilesInfo</span>{<span class="w">BgFilledOddRowHeaderTags</span>} <span class="co">:</span> <span class="i">$TextFilesInfo</span>{<span class="w">BgFilledEvenRowHeaderTags</span>}<span class="sc">;</span>
+ 295     <span class="s">}</span>
+ 296     <span class="k">else</span> <span class="s">{</span>
+ 297       <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">$TextFilesInfo</span>{<span class="w">RowHeaderTags</span>}<span class="sc">;</span>
+ 298     <span class="s">}</span>
+ 299     <span class="i">@RowValues</span> = <span class="i">quotewords</span><span class="s">(</span><span class="i">$InDelim</span><span class="cm">,</span> <span class="n">0</span><span class="cm">,</span> <span class="i">$Line</span><span class="s">)</span><span class="sc">;</span>
+ 300     <span class="k">for</span> <span class="i">$ColNum</span> <span class="s">(</span><span class="n">0</span> .. <span class="i">$LastColNum</span><span class="s">)</span> <span class="s">{</span>
+ 301       <span class="i">$Value</span> = <span class="s">(</span><span class="i">$ColNum</span> &lt;= <span class="i">$#RowValues</span><span class="s">)</span> ? <span class="i">$RowValues</span>[<span class="i">$ColNum</span>] <span class="co">:</span> <span class="q">&quot;&quot;</span><span class="sc">;</span>
+ 302       <span class="i">$BackgroundColor</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="i">$FontColor</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+ 303       <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">HighlightStatus</span>}<span class="s">)</span> <span class="s">{</span>
+ 304         <span class="k">if</span> <span class="s">(</span><span class="k">exists</span><span class="s">(</span><span class="i">$TextFilesInfo</span>{<span class="w">HightlightColNumMap</span>}[<span class="i">$Index</span>]{<span class="i">$ColNum</span>}<span class="s">)</span><span class="s">)</span> <span class="s">{</span>
+ 305           <span class="s">(</span><span class="i">$BackgroundColor</span><span class="cm">,</span> <span class="i">$FontColor</span><span class="s">)</span> = <span class="i">GetValueHighlightColors</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$ColNum</span><span class="cm">,</span> <span class="i">$Value</span><span class="s">)</span><span class="sc">;</span>
+ 306         <span class="s">}</span>
+ 307       <span class="s">}</span>
+ 308       <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="i">$Value</span><span class="cm">,</span> <span class="i">$BackgroundColor</span><span class="cm">,</span> <span class="i">$FontColor</span><span class="s">)</span><span class="sc">;</span>
+ 309     <span class="s">}</span>
+ 310     <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">$TextFilesInfo</span>{<span class="w">RowEndTags</span>}<span class="sc">;</span>
+ 311   <span class="s">}</span>
+ 312 <span class="s">}</span>
+ 313 
+ 314 <span class="c"># Setup navigation link information for each table.</span>
+ 315 <span class="c">#</span>
+ 316 <span class="c"># All table sets besides first and last have these links: FirstTable, Previous, Current-1,Current,Current+1,  Next, and LastTable</span>
+ 317 <span class="c"># First set: Current, Next, and LastTable</span>
+ 318 <span class="c"># Last set: FirstTable, Previous and Current.</span>
+ 319 <span class="c">#</span>
+<a name="WriteNavigationLinks-"></a> 320 <span class="k">sub </span><span class="m">WriteNavigationLinks</span> <span class="s">{</span>
+ 321   <span class="k">my</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$CurTableNum</span><span class="cm">,</span> <span class="i">$HTMLFileRef</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
+ 322   <span class="k">my</span><span class="s">(</span><span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$StartTableNum</span><span class="cm">,</span> <span class="i">$EndTableNum</span><span class="cm">,</span> <span class="i">$TableIndex</span><span class="cm">,</span> <span class="i">$BorderWidth</span><span class="cm">,</span> <span class="i">$CellPadding</span><span class="cm">,</span> <span class="i">$CellSpacing</span><span class="cm">,</span><span class="i">$HTMLFile</span><span class="cm">,</span> <span class="i">$HTMLRefFile</span><span class="cm">,</span> <span class="i">$RelativeFileDir</span><span class="cm">,</span> <span class="i">$HTMLRefValue</span><span class="cm">,</span> <span class="i">$FirstTableNum</span><span class="cm">,</span> <span class="i">$FirstTableIndex</span><span class="cm">,</span> <span class="i">$LastTableNum</span><span class="cm">,</span> <span class="i">$LastTableIndex</span><span class="cm">,</span> <span class="i">$TableStartLineNum</span><span class="cm">,</span> <span class="i">$TableEndLineNum</span><span class="cm">,</span> <span class="i">$LastLineNum</span><span class="cm">,</span> <span class="i">$BGColor</span><span class="cm">,</span> <span class="i">$LinksOffSet</span><span class="s">)</span><span class="sc">;</span>
+ 323 
+ 324   <span class="i">$LinksOffSet</span> = <span class="n">10</span><span class="sc">;</span>
+ 325 
+ 326   <span class="i">$FirstTableNum</span> = <span class="n">1</span><span class="sc">;</span> <span class="i">$FirstTableIndex</span> = <span class="i">$FirstTableNum</span> - <span class="n">1</span><span class="sc">;</span>
+ 327   <span class="i">$LastTableNum</span> = <span class="i">$TextFilesInfo</span>{<span class="w">TableCount</span>}[<span class="i">$Index</span>]<span class="sc">;</span> <span class="i">$LastTableIndex</span> = <span class="i">$LastTableNum</span> - <span class="n">1</span><span class="sc">;</span>
+ 328   <span class="i">$LastLineNum</span> = <span class="i">$</span>{<span class="i">$TextFilesInfo</span>{<span class="w">TableEndLineNum</span>}[<span class="i">$Index</span>]}[<span class="i">$LastTableIndex</span>]<span class="sc">;</span>
+ 329 
+ 330   <span class="c"># Figure out which links to display for a particular table...</span>
+ 331   <span class="i">$StartTableNum</span> = <span class="i">$CurTableNum</span> - <span class="i">$LinksOffSet</span> + <span class="n">1</span><span class="sc">;</span>
+ 332   <span class="i">$StartTableNum</span> = <span class="s">(</span><span class="i">$StartTableNum</span> &lt; <span class="i">$FirstTableNum</span><span class="s">)</span> ? <span class="i">$FirstTableNum</span> <span class="co">:</span> <span class="i">$StartTableNum</span><span class="sc">;</span>
+ 333   <span class="k">if</span> <span class="s">(</span><span class="i">$CurTableNum</span> &lt; <span class="i">$LinksOffSet</span><span class="s">)</span> <span class="s">{</span>
+ 334     <span class="i">$EndTableNum</span> = <span class="i">$LinksOffSet</span><span class="sc">;</span>
+ 335   <span class="s">}</span>
+ 336   <span class="k">else</span> <span class="s">{</span>
+ 337     <span class="i">$EndTableNum</span> = <span class="i">$CurTableNum</span> + <span class="i">$LinksOffSet</span> - <span class="n">1</span><span class="sc">;</span>
+ 338   <span class="s">}</span>
+ 339   <span class="i">$EndTableNum</span> = <span class="s">(</span><span class="i">$EndTableNum</span> &gt; <span class="i">$LastTableNum</span><span class="s">)</span> ? <span class="i">$LastTableNum</span> <span class="co">:</span> <span class="i">$EndTableNum</span><span class="sc">;</span>
+ 340 
+ 341   <span class="k">my</span><span class="s">(</span><span class="i">$InactiveLinkNumColor</span><span class="cm">,</span> <span class="i">$InactiveLinkFontBold</span><span class="s">)</span> = <span class="s">(</span><span class="q">&quot;#8e2323&quot;</span><span class="cm">,</span> <span class="q">&quot;1&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 342   <span class="k">my</span><span class="s">(</span><span class="i">$LinkTextColor</span><span class="cm">,</span> <span class="i">$LinkBGColor</span><span class="cm">,</span> <span class="i">$LinkFontBold</span><span class="s">)</span> = <span class="s">(</span><span class="q">&quot;&quot;</span><span class="cm">,</span> <span class="q">&quot;&quot;</span><span class="cm">,</span> <span class="q">&quot;1&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 343 
+ 344   <span class="c"># Start link table...</span>
+ 345   <span class="i">$BorderWidth</span> = <span class="n">0</span><span class="sc">;</span> <span class="i">$CellPadding</span> = <span class="n">2</span><span class="sc">;</span> <span class="i">$CellSpacing</span> = <span class="n">2</span><span class="sc">;</span>
+ 346   <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLAlignmentBegin</span><span class="s">(</span><span class="q">&quot;center&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 347   <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLDivBegin</span><span class="s">(</span><span class="q">&quot;tablenav&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 348   <span class="k">print</span> <span class="i">$HTMLFileRef</span>  <span class="i">SetupHTMLTableHeader</span><span class="s">(</span><span class="i">$BorderWidth</span><span class="cm">,</span> <span class="i">$CellPadding</span><span class="cm">,</span> <span class="i">$CellSpacing</span><span class="s">)</span><span class="sc">;</span>
+ 349   <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">$TextFilesInfo</span>{<span class="w">RowHeaderTags</span>}<span class="sc">;</span>
+ 350 
+ 351   <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">NavLinksTableInfo</span>} &amp;&amp; <span class="i">$OptionsInfo</span>{<span class="w">NavLinksLineInfo</span>}<span class="s">)</span> <span class="s">{</span>
+ 352     <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="q">&quot;Showing table $CurTableNum of $LastTableNum&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 353     <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="q">&quot;&amp;nbsp&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 354     <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="q">&quot;&amp;nbsp&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 355   <span class="s">}</span>
+ 356 
+ 357   <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="q">&quot;Tables: &quot;</span><span class="s">)</span><span class="sc">;</span>
+ 358   <span class="c"># Setup a link to first table...</span>
+ 359   <span class="k">if</span> <span class="s">(</span><span class="i">$StartTableNum</span> != <span class="i">$FirstTableNum</span><span class="s">)</span> <span class="s">{</span>
+ 360     <span class="i">$HTMLFile</span> = <span class="i">$</span>{<span class="i">$TextFilesInfo</span>{<span class="w">TableHTMLFiles</span>}[<span class="i">$Index</span>]}[<span class="i">$FirstTableIndex</span>]<span class="sc">;</span>
+ 361     <span class="i">$HTMLRefFile</span> = <span class="i">GetRelativeFileDir</span><span class="s">(</span><span class="i">$CurTableNum</span><span class="cm">,</span> <span class="i">$FirstTableNum</span><span class="cm">,</span> <span class="i">$FirstTableNum</span><span class="s">)</span> . <span class="i">$HTMLFile</span><span class="sc">;</span>
+ 362     <span class="i">$TableStartLineNum</span> = <span class="i">$</span>{<span class="i">$TextFilesInfo</span>{<span class="w">TableStartLineNum</span>}[<span class="i">$Index</span>]}[<span class="i">$FirstTableIndex</span>]<span class="sc">;</span>
+ 363     <span class="i">$TableEndLineNum</span> = <span class="i">$</span>{<span class="i">$TextFilesInfo</span>{<span class="w">TableEndLineNum</span>}[<span class="i">$Index</span>]}[<span class="i">$FirstTableIndex</span>]<span class="sc">;</span>
+ 364     <span class="i">$HTMLRefValue</span> = <span class="i">SetupHTMLHRef</span><span class="s">(</span><span class="q">&quot;First&quot;</span><span class="cm">,</span> <span class="i">$HTMLRefFile</span><span class="cm">,</span> <span class="q">&quot;First Table Containing Lines $TableStartLineNum To $TableEndLineNum&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 365     <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="i">$HTMLRefValue</span><span class="cm">,</span> <span class="i">$LinkBGColor</span><span class="cm">,</span> <span class="i">$LinkTextColor</span><span class="cm">,</span> <span class="i">$LinkFontBold</span><span class="s">)</span><span class="sc">;</span>
+ 366   <span class="s">}</span>
+ 367 
+ 368   <span class="c"># Setup link to previous table...</span>
+ 369   <span class="k">if</span> <span class="s">(</span><span class="i">$CurTableNum</span> != <span class="i">$FirstTableNum</span><span class="s">)</span> <span class="s">{</span>
+ 370     <span class="k">my</span><span class="s">(</span><span class="i">$PreviousTableNum</span><span class="cm">,</span> <span class="i">$PreviousTableIndex</span><span class="s">)</span><span class="sc">;</span>
+ 371     <span class="i">$PreviousTableNum</span> = <span class="i">$CurTableNum</span> - <span class="n">1</span><span class="sc">;</span> <span class="i">$PreviousTableIndex</span> = <span class="i">$PreviousTableNum</span> - <span class="n">1</span><span class="sc">;</span>
+ 372     <span class="i">$HTMLFile</span> = <span class="i">$</span>{<span class="i">$TextFilesInfo</span>{<span class="w">TableHTMLFiles</span>}[<span class="i">$Index</span>]}[<span class="i">$PreviousTableIndex</span>]<span class="sc">;</span>
+ 373     <span class="i">$HTMLRefFile</span> = <span class="i">GetRelativeFileDir</span><span class="s">(</span><span class="i">$CurTableNum</span><span class="cm">,</span> <span class="i">$PreviousTableNum</span><span class="cm">,</span> <span class="i">$FirstTableNum</span><span class="s">)</span> . <span class="i">$HTMLFile</span><span class="sc">;</span>
+ 374     <span class="i">$TableStartLineNum</span> = <span class="i">$</span>{<span class="i">$TextFilesInfo</span>{<span class="w">TableStartLineNum</span>}[<span class="i">$Index</span>]}[<span class="i">$PreviousTableIndex</span>]<span class="sc">;</span>
+ 375     <span class="i">$TableEndLineNum</span> = <span class="i">$</span>{<span class="i">$TextFilesInfo</span>{<span class="w">TableEndLineNum</span>}[<span class="i">$Index</span>]}[<span class="i">$PreviousTableIndex</span>]<span class="sc">;</span>
+ 376     <span class="i">$HTMLRefValue</span> = <span class="i">SetupHTMLHRef</span><span class="s">(</span><span class="q">&quot;Previous&quot;</span><span class="cm">,</span> <span class="i">$HTMLRefFile</span><span class="cm">,</span> <span class="q">&quot;Previous Table Containing Lines $TableStartLineNum To $TableEndLineNum&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 377     <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="i">$HTMLRefValue</span><span class="cm">,</span> <span class="i">$LinkBGColor</span><span class="cm">,</span> <span class="i">$LinkTextColor</span><span class="cm">,</span> <span class="i">$LinkFontBold</span><span class="s">)</span><span class="sc">;</span>
+ 378   <span class="s">}</span>
+ 379 
+ 380   <span class="k">for</span> <span class="i">$TableNum</span> <span class="s">(</span><span class="i">$StartTableNum</span> .. <span class="i">$EndTableNum</span><span class="s">)</span> <span class="s">{</span>
+ 381     <span class="i">$TableIndex</span> = <span class="i">$TableNum</span> - <span class="n">1</span><span class="sc">;</span>
+ 382     <span class="i">$HTMLFile</span> = <span class="i">$</span>{<span class="i">$TextFilesInfo</span>{<span class="w">TableHTMLFiles</span>}[<span class="i">$Index</span>]}[<span class="i">$TableIndex</span>]<span class="sc">;</span>
+ 383     <span class="k">if</span> <span class="s">(</span><span class="i">$TableNum</span> == <span class="i">$CurTableNum</span><span class="s">)</span> <span class="s">{</span>
+ 384       <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$LinkBGColor</span><span class="cm">,</span> <span class="i">$InactiveLinkNumColor</span><span class="cm">,</span> <span class="i">$InactiveLinkFontBold</span><span class="s">)</span><span class="sc">;</span>
+ 385     <span class="s">}</span>
+ 386     <span class="k">else</span> <span class="s">{</span>
+ 387       <span class="c"># Setup the link...</span>
+ 388       <span class="k">my</span><span class="s">(</span><span class="i">$RefTitle</span><span class="s">)</span><span class="sc">;</span>
+ 389       <span class="i">$TableStartLineNum</span> = <span class="i">$</span>{<span class="i">$TextFilesInfo</span>{<span class="w">TableStartLineNum</span>}[<span class="i">$Index</span>]}[<span class="i">$TableIndex</span>]<span class="sc">;</span>
+ 390       <span class="i">$TableEndLineNum</span> = <span class="i">$</span>{<span class="i">$TextFilesInfo</span>{<span class="w">TableEndLineNum</span>}[<span class="i">$Index</span>]}[<span class="i">$TableIndex</span>]<span class="sc">;</span>
+ 391       <span class="i">$RefTitle</span> = <span class="i">AddNumberSuffix</span><span class="s">(</span><span class="i">$TableNum</span><span class="s">)</span> . <span class="q">&quot; Table Containing Lines $TableStartLineNum To $TableEndLineNum&quot;</span><span class="sc">;</span>
+ 392       <span class="i">$HTMLRefFile</span> = <span class="i">GetRelativeFileDir</span><span class="s">(</span><span class="i">$CurTableNum</span><span class="cm">,</span> <span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$FirstTableNum</span><span class="s">)</span> . <span class="i">$HTMLFile</span><span class="sc">;</span>
+ 393       <span class="i">$HTMLRefValue</span> = <span class="i">SetupHTMLHRef</span><span class="s">(</span><span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$HTMLRefFile</span><span class="cm">,</span> <span class="i">$RefTitle</span><span class="s">)</span><span class="sc">;</span>
+ 394       <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="i">$HTMLRefValue</span><span class="s">)</span><span class="sc">;</span>
+ 395     <span class="s">}</span>
+ 396   <span class="s">}</span>
+ 397 
+ 398   <span class="c"># Setup link to next table...</span>
+ 399   <span class="k">if</span> <span class="s">(</span><span class="i">$CurTableNum</span> != <span class="i">$LastTableNum</span><span class="s">)</span> <span class="s">{</span>
+ 400     <span class="k">my</span><span class="s">(</span><span class="i">$NextTableNum</span><span class="cm">,</span> <span class="i">$NextTableIndex</span><span class="s">)</span><span class="sc">;</span>
+ 401     <span class="i">$NextTableNum</span> = <span class="i">$CurTableNum</span> + <span class="n">1</span><span class="sc">;</span> <span class="i">$NextTableIndex</span> = <span class="i">$NextTableNum</span> - <span class="n">1</span><span class="sc">;</span>
+ 402     <span class="i">$HTMLFile</span> = <span class="i">$</span>{<span class="i">$TextFilesInfo</span>{<span class="w">TableHTMLFiles</span>}[<span class="i">$Index</span>]}[<span class="i">$NextTableIndex</span>]<span class="sc">;</span>
+ 403     <span class="i">$HTMLRefFile</span> = <span class="i">GetRelativeFileDir</span><span class="s">(</span><span class="i">$CurTableNum</span><span class="cm">,</span> <span class="i">$NextTableNum</span><span class="cm">,</span> <span class="i">$FirstTableNum</span><span class="s">)</span> . <span class="i">$HTMLFile</span><span class="sc">;</span>
+ 404     <span class="i">$TableStartLineNum</span> = <span class="i">$</span>{<span class="i">$TextFilesInfo</span>{<span class="w">TableStartLineNum</span>}[<span class="i">$Index</span>]}[<span class="i">$NextTableIndex</span>]<span class="sc">;</span>
+ 405     <span class="i">$TableEndLineNum</span> = <span class="i">$</span>{<span class="i">$TextFilesInfo</span>{<span class="w">TableEndLineNum</span>}[<span class="i">$Index</span>]}[<span class="i">$NextTableIndex</span>]<span class="sc">;</span>
+ 406     <span class="i">$HTMLRefValue</span> = <span class="i">SetupHTMLHRef</span><span class="s">(</span><span class="q">&quot;Next&quot;</span><span class="cm">,</span> <span class="i">$HTMLRefFile</span><span class="cm">,</span> <span class="q">&quot;Next Table Containing Lines $TableStartLineNum To $TableEndLineNum&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 407     <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="i">$HTMLRefValue</span><span class="cm">,</span> <span class="i">$LinkBGColor</span><span class="cm">,</span> <span class="i">$LinkTextColor</span><span class="cm">,</span> <span class="i">$LinkFontBold</span><span class="s">)</span><span class="sc">;</span>
+ 408   <span class="s">}</span>
+ 409 
+ 410   <span class="c"># Setup link to last table...</span>
+ 411   <span class="k">if</span> <span class="s">(</span><span class="i">$EndTableNum</span> != <span class="i">$LastTableNum</span><span class="s">)</span> <span class="s">{</span>
+ 412     <span class="i">$HTMLFile</span> = <span class="i">$</span>{<span class="i">$TextFilesInfo</span>{<span class="w">TableHTMLFiles</span>}[<span class="i">$Index</span>]}[<span class="i">$LastTableIndex</span>]<span class="sc">;</span>
+ 413     <span class="i">$HTMLRefFile</span> = <span class="i">GetRelativeFileDir</span><span class="s">(</span><span class="i">$CurTableNum</span><span class="cm">,</span> <span class="i">$LastTableNum</span><span class="cm">,</span> <span class="i">$FirstTableNum</span><span class="s">)</span> . <span class="i">$HTMLFile</span><span class="sc">;</span>
+ 414     <span class="i">$TableStartLineNum</span> = <span class="i">$</span>{<span class="i">$TextFilesInfo</span>{<span class="w">TableStartLineNum</span>}[<span class="i">$Index</span>]}[<span class="i">$LastTableIndex</span>]<span class="sc">;</span>
+ 415     <span class="i">$TableEndLineNum</span> = <span class="i">$</span>{<span class="i">$TextFilesInfo</span>{<span class="w">TableEndLineNum</span>}[<span class="i">$Index</span>]}[<span class="i">$LastTableIndex</span>]<span class="sc">;</span>
+ 416     <span class="i">$HTMLRefValue</span> = <span class="i">SetupHTMLHRef</span><span class="s">(</span><span class="q">&quot;Last&quot;</span><span class="cm">,</span> <span class="i">$HTMLRefFile</span><span class="cm">,</span> <span class="q">&quot;Last Table Containing Lines $TableStartLineNum To $TableEndLineNum&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 417     <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="i">$HTMLRefValue</span><span class="cm">,</span> <span class="i">$LinkBGColor</span><span class="cm">,</span> <span class="i">$LinkTextColor</span><span class="cm">,</span> <span class="i">$LinkFontBold</span><span class="s">)</span><span class="sc">;</span>
+ 418   <span class="s">}</span>
+ 419   <span class="c"># Setup current table info text....</span>
+ 420   <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="q">&quot;&amp;nbsp&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 421   <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="q">&quot;&amp;nbsp&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 422   <span class="i">$TableStartLineNum</span> = <span class="i">$</span>{<span class="i">$TextFilesInfo</span>{<span class="w">TableStartLineNum</span>}[<span class="i">$Index</span>]}[<span class="i">$CurTableNum</span> - <span class="n">1</span>]<span class="sc">;</span>
+ 423   <span class="i">$TableEndLineNum</span> = <span class="i">$</span>{<span class="i">$TextFilesInfo</span>{<span class="w">TableEndLineNum</span>}[<span class="i">$Index</span>]}[<span class="i">$CurTableNum</span> - <span class="n">1</span>]<span class="sc">;</span>
+ 424   <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">NavLinksLineInfo</span>}<span class="s">)</span> <span class="s">{</span>
+ 425     <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="q">&quot;Showing lines $TableStartLineNum to $TableEndLineNum of $LastLineNum&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 426   <span class="s">}</span>
+ 427   <span class="k">else</span> <span class="s">{</span>
+ 428     <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="q">&quot;Showing table $CurTableNum of $LastTableNum&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 429   <span class="s">}</span>
+ 430 
+ 431   <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">$TextFilesInfo</span>{<span class="w">RowEndTags</span>}<span class="sc">;</span>
+ 432   <span class="c"># End link table...</span>
+ 433   <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableEnd</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 434   <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLDivEnd</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 435   <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLAlignmentEnd</span><span class="s">(</span><span class="q">&quot;center&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 436 <span class="s">}</span>
+ 437 
+ 438 <span class="c"># Generate relative directory path...</span>
+<a name="GetRelativeFileDir-"></a> 439 <span class="k">sub </span><span class="m">GetRelativeFileDir</span> <span class="s">{</span>
+ 440   <span class="k">my</span><span class="s">(</span><span class="i">$FromTableNum</span><span class="cm">,</span> <span class="i">$ToTableNum</span><span class="cm">,</span> <span class="i">$FirstTableNum</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
+ 441   <span class="k">my</span><span class="s">(</span><span class="i">$RelativeFileDir</span><span class="s">)</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+ 442 
+ 443   <span class="k">if</span> <span class="s">(</span><span class="i">$FromTableNum</span> == <span class="i">$FirstTableNum</span><span class="s">)</span> <span class="s">{</span>
+ 444     <span class="i">$RelativeFileDir</span> = <span class="s">(</span><span class="i">$ToTableNum</span> == <span class="i">$FirstTableNum</span><span class="s">)</span> ? <span class="q">&quot;.\/&quot;</span> <span class="co">:</span> <span class="q">&quot;.\/html\/&quot;</span><span class="sc">;</span>
+ 445   <span class="s">}</span>
+ 446   <span class="k">else</span> <span class="s">{</span>
+ 447     <span class="i">$RelativeFileDir</span> = <span class="s">(</span><span class="i">$ToTableNum</span> == <span class="i">$FirstTableNum</span><span class="s">)</span> ? <span class="q">&quot;..\/&quot;</span> <span class="co">:</span> <span class="q">&quot;.\/&quot;</span><span class="sc">;</span>
+ 448   <span class="s">}</span>
+ 449   <span class="k">return</span> <span class="i">$RelativeFileDir</span><span class="sc">;</span>
+ 450 <span class="s">}</span>
+ 451 
+ 452 <span class="c"># Based on hightlight stype, return appropriate colors for background or text...</span>
+<a name="GetValueHighlightColors-"></a> 453 <span class="k">sub </span><span class="m">GetValueHighlightColors</span> <span class="s">{</span>
+ 454   <span class="k">my</span><span class="s">(</span><span class="i">$FileIndex</span><span class="cm">,</span> <span class="i">$ColNum</span><span class="cm">,</span> <span class="i">$Value</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
+ 455   <span class="k">my</span><span class="s">(</span><span class="i">$DataType</span><span class="cm">,</span> <span class="i">$Criterion</span><span class="cm">,</span> <span class="i">$CriterionValue</span><span class="cm">,</span> <span class="i">$BgColor</span><span class="cm">,</span> <span class="i">$FontColor</span><span class="cm">,</span> <span class="i">$ValueOk</span><span class="cm">,</span> <span class="i">$Nothing</span><span class="s">)</span><span class="sc">;</span>
+ 456 
+ 457   <span class="i">$BgColor</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="i">$FontColor</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+ 458   <span class="i">$DataType</span> = <span class="i">$</span>{<span class="i">$TextFilesInfo</span>{<span class="w">HightlightDataMap</span>}[<span class="i">$FileIndex</span>]{<span class="i">$ColNum</span>}}[<span class="n">0</span>]<span class="sc">;</span>
+ 459   <span class="i">$Criterion</span> = <span class="i">$</span>{<span class="i">$TextFilesInfo</span>{<span class="w">HightlightDataMap</span>}[<span class="i">$FileIndex</span>]{<span class="i">$ColNum</span>}}[<span class="n">1</span>]<span class="sc">;</span>
+ 460   <span class="i">$CriterionValue</span> = <span class="i">$</span>{<span class="i">$TextFilesInfo</span>{<span class="w">HightlightDataMap</span>}[<span class="i">$FileIndex</span>]{<span class="i">$ColNum</span>}}[<span class="n">2</span>]<span class="sc">;</span>
+ 461 
+ 462   <span class="i">$ValueOk</span> = <span class="n">0</span><span class="sc">;</span>
+ 463   <span class="k">if</span> <span class="s">(</span><span class="i">$DataType</span> =~ <span class="q">/^numeric$/i</span><span class="s">)</span> <span class="s">{</span>
+ 464   <span class="j">NUMSWITCH:</span> <span class="s">{</span>
+ 465       <span class="k">if</span> <span class="s">(</span><span class="i">$Criterion</span> =~ <span class="q">/^ge$/i</span><span class="s">)</span> <span class="s">{</span> <span class="i">$ValueOk</span> = <span class="s">(</span><span class="i">$Value</span> &gt;= <span class="i">$CriterionValue</span><span class="s">)</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span> <span class="k">last</span> <span class="j">NUMSWITCH</span><span class="sc">;</span> <span class="s">}</span>
+ 466       <span class="k">if</span> <span class="s">(</span><span class="i">$Criterion</span> =~ <span class="q">/^le$/i</span><span class="s">)</span> <span class="s">{</span> <span class="i">$ValueOk</span> = <span class="s">(</span><span class="i">$Value</span> &lt;= <span class="i">$CriterionValue</span><span class="s">)</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span> <span class="k">last</span> <span class="j">NUMSWITCH</span><span class="sc">;</span> <span class="s">}</span>
+ 467       <span class="k">if</span> <span class="s">(</span><span class="i">$Criterion</span> =~ <span class="q">/^eq$/i</span><span class="s">)</span> <span class="s">{</span> <span class="i">$ValueOk</span> = <span class="s">(</span><span class="i">$Value</span> == <span class="i">$CriterionValue</span><span class="s">)</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span> <span class="k">last</span> <span class="j">NUMSWITCH</span><span class="sc">;</span> <span class="s">}</span>
+ 468       <span class="i">$Nothing</span> = <span class="n">1</span><span class="sc">;</span>
+ 469     <span class="s">}</span>
+ 470   <span class="s">}</span>
+ 471   <span class="k">else</span> <span class="s">{</span>
+ 472   <span class="j">TEXTSWITCH:</span> <span class="s">{</span>
+ 473       <span class="k">if</span> <span class="s">(</span><span class="i">$Criterion</span> =~ <span class="q">/^ge$/i</span><span class="s">)</span> <span class="s">{</span> <span class="i">$ValueOk</span> = <span class="s">(</span><span class="i">$Value</span> <span class="k">ge</span> <span class="i">$CriterionValue</span><span class="s">)</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span> <span class="k">last</span> <span class="j">TEXTSWITCH</span><span class="sc">;</span> <span class="s">}</span>
+ 474       <span class="k">if</span> <span class="s">(</span><span class="i">$Criterion</span> =~ <span class="q">/^le$/i</span><span class="s">)</span> <span class="s">{</span> <span class="i">$ValueOk</span> = <span class="s">(</span><span class="i">$Value</span> <span class="k">le</span> <span class="i">$CriterionValue</span><span class="s">)</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span> <span class="k">last</span> <span class="j">TEXTSWITCH</span><span class="sc">;</span> <span class="s">}</span>
+ 475       <span class="k">if</span> <span class="s">(</span><span class="i">$Criterion</span> =~ <span class="q">/^eq$/i</span><span class="s">)</span> <span class="s">{</span> <span class="i">$ValueOk</span> = <span class="s">(</span><span class="i">$Value</span> <span class="k">eq</span> <span class="i">$CriterionValue</span><span class="s">)</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span> <span class="k">last</span> <span class="j">TEXTSWITCH</span><span class="sc">;</span> <span class="s">}</span>
+ 476       <span class="i">$Nothing</span> = <span class="n">1</span><span class="sc">;</span>
+ 477     <span class="s">}</span>
+ 478   <span class="s">}</span>
+ 479   <span class="i">$BgColor</span> = <span class="i">$ValueOk</span> ? <span class="i">$OptionsInfo</span>{<span class="w">ValueOkColor</span>} <span class="co">:</span> <span class="i">$OptionsInfo</span>{<span class="w">ValueNotOkColor</span>}<span class="sc">;</span>
+ 480   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">highlightstyle</span>} =~ <span class="q">/^text$/i</span><span class="s">)</span> <span class="s">{</span>
+ 481     <span class="i">$BgColor</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+ 482     <span class="i">$FontColor</span> = <span class="i">$ValueOk</span> ? <span class="i">$OptionsInfo</span>{<span class="w">ValueOkColor</span>} <span class="co">:</span> <span class="i">$OptionsInfo</span>{<span class="w">ValueNotOkColor</span>}<span class="sc">;</span>
+ 483   <span class="s">}</span>
+ 484   <span class="k">return</span> <span class="s">(</span><span class="i">$BgColor</span><span class="cm">,</span> <span class="i">$FontColor</span><span class="s">)</span><span class="sc">;</span>
+ 485 <span class="s">}</span>
+ 486 
+ 487 <span class="c"># Setup columns, tables and other information...</span>
+<a name="SetupCoulmnsTablesAndMiscInfo-"></a> 488 <span class="k">sub </span><span class="m">SetupCoulmnsTablesAndMiscInfo</span> <span class="s">{</span>
+ 489   <span class="i">SetupColumnsToHighlightInfo</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 490   <span class="i">SetupMultipleTablesInfo</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 491   <span class="i">SetupHTMLTagsInfo</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 492 <span class="s">}</span>
+ 493 
+ 494 <span class="c"># Setup columns to highlight information...</span>
+<a name="SetupColumnsToHighlightInfo-"></a> 495 <span class="k">sub </span><span class="m">SetupColumnsToHighlightInfo</span> <span class="s">{</span>
+ 496   <span class="k">my</span><span class="s">(</span><span class="i">$ColID</span><span class="cm">,</span> <span class="i">$DataType</span><span class="cm">,</span> <span class="i">$Criterion</span><span class="cm">,</span> <span class="i">$Value</span><span class="cm">,</span> <span class="i">$Index</span><span class="cm">,</span> <span class="i">$ColNum</span><span class="cm">,</span> <span class="i">$ColLabel</span><span class="cm">,</span> <span class="i">$ColIndex</span><span class="s">)</span><span class="sc">;</span>
+ 497 
+ 498   <span class="i">@</span>{<span class="i">$TextFilesInfo</span>{<span class="w">HightlightColNumMap</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 499   <span class="i">@</span>{<span class="i">$TextFilesInfo</span>{<span class="w">HightlightDataMap</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 500 
+ 501   <span class="k">for</span> <span class="i">$Index</span> <span class="s">(</span><span class="n">0</span> .. <span class="i">$#TextFilesList</span><span class="s">)</span> <span class="s">{</span>
+ 502     <span class="i">%</span>{<span class="i">$TextFilesInfo</span>{<span class="w">HightlightColNumMap</span>}[<span class="i">$Index</span>]} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 503     <span class="i">%</span>{<span class="i">$TextFilesInfo</span>{<span class="w">HightlightDataMap</span>}[<span class="i">$Index</span>]} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 504     <span class="k">if</span> <span class="s">(</span><span class="i">$TextFilesInfo</span>{<span class="w">FileOkay</span>}[<span class="i">$Index</span>]<span class="s">)</span> <span class="s">{</span>
+ 505       <span class="j">SPECIFIEDCOLS:</span> <span class="k">for</span> <span class="i">$ColIndex</span> <span class="s">(</span><span class="n">0</span> .. <span class="i">$#</span>{<span class="i">$OptionsInfo</span>{<span class="w">SpecifiedColIds</span>}}<span class="s">)</span> <span class="s">{</span>
+ 506         <span class="i">$ColID</span> = <span class="i">$OptionsInfo</span>{<span class="w">SpecifiedColIds</span>}[<span class="i">$ColIndex</span>]<span class="sc">;</span>
+ 507         <span class="i">$DataType</span> = <span class="i">$OptionsInfo</span>{<span class="w">SpecifiedColDataTypes</span>}[<span class="i">$ColIndex</span>]<span class="sc">;</span>
+ 508         <span class="i">$Criterion</span> = <span class="i">$OptionsInfo</span>{<span class="w">SpecifiedColCriteria</span>}[<span class="i">$ColIndex</span>]<span class="sc">;</span>
+ 509         <span class="i">$Value</span> = <span class="i">$OptionsInfo</span>{<span class="w">SpecifiedColValues</span>}[<span class="i">$ColIndex</span>]<span class="sc">;</span>
+ 510         <span class="k">if</span> <span class="s">(</span>!<span class="i">$OptionsInfo</span>{<span class="w">HighlightStatus</span>}<span class="s">)</span> <span class="s">{</span>
+ 511           <span class="k">next</span> <span class="j">SPECIFIEDCOLS</span><span class="sc">;</span>
+ 512         <span class="s">}</span>
+ 513         <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">highlightby</span>} =~ <span class="q">/^colnum$/i</span><span class="s">)</span> <span class="s">{</span>
+ 514           <span class="i">$ColNum</span> = <span class="i">$ColID</span><span class="sc">;</span>
+ 515           <span class="k">if</span> <span class="s">(</span><span class="i">$ColNum</span> &gt; <span class="n">0</span> &amp;&amp; <span class="i">$ColNum</span> &lt;= <span class="i">$TextFilesInfo</span>{<span class="w">ColCount</span>}[<span class="i">$Index</span>]<span class="s">)</span> <span class="s">{</span>
+ 516             <span class="i">$ColNum</span> -= <span class="n">1</span><span class="sc">;</span>
+ 517           <span class="s">}</span>
+ 518           <span class="k">else</span> <span class="s">{</span>
+ 519             <span class="k">warn</span> <span class="q">&quot;Warning: Ignoring column number, $ColID, specifed in quartet, \&quot;$ColID,$DataType,$Criterion,$Value\&quot;, using \&quot;--highlight\&quot; option for $TextFilesList[$Index]: it doesn&#39;t exists \n&quot;</span><span class="sc">;</span>
+ 520             <span class="k">next</span> <span class="j">SPECIFIEDCOLS</span><span class="sc">;</span>
+ 521           <span class="s">}</span>
+ 522         <span class="s">}</span>
+ 523         <span class="k">else</span> <span class="s">{</span>
+ 524           <span class="i">$ColLabel</span> = <span class="i">$ColID</span><span class="sc">;</span>
+ 525           <span class="k">if</span> <span class="s">(</span><span class="k">exists</span><span class="s">(</span><span class="i">$TextFilesInfo</span>{<span class="w">ColLabelToNumMap</span>}[<span class="i">$Index</span>]{<span class="i">$ColLabel</span>}<span class="s">)</span><span class="s">)</span> <span class="s">{</span>
+ 526             <span class="i">$ColNum</span> = <span class="i">$TextFilesInfo</span>{<span class="w">ColLabelToNumMap</span>}[<span class="i">$Index</span>]{<span class="i">$ColLabel</span>}<span class="sc">;</span>
+ 527           <span class="s">}</span> <span class="k">else</span> <span class="s">{</span>
+ 528             <span class="k">warn</span> <span class="q">&quot;Warning: Ignoring column label, $ColID, specifed in quartet, \&quot;$ColID,$DataType,$Criterion,$Value\&quot;, using \&quot;--highlight\&quot; option for $TextFilesList[$Index]: it doesn&#39;t exists \n&quot;</span><span class="sc">;</span>
+ 529             <span class="k">next</span> <span class="j">SPECIFIEDCOLS</span><span class="sc">;</span>
+ 530           <span class="s">}</span>
+ 531         <span class="s">}</span>
+ 532         <span class="i">$TextFilesInfo</span>{<span class="w">HightlightColNumMap</span>}[<span class="i">$Index</span>]{<span class="i">$ColNum</span>} = <span class="i">$ColNum</span><span class="sc">;</span>
+ 533         <span class="i">@</span>{<span class="i">$TextFilesInfo</span>{<span class="w">HightlightDataMap</span>}[<span class="i">$Index</span>]{<span class="i">$ColNum</span>}} =<span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 534         <span class="k">push</span> <span class="i">@</span>{<span class="i">$TextFilesInfo</span>{<span class="w">HightlightDataMap</span>}[<span class="i">$Index</span>]{<span class="i">$ColNum</span>}}<span class="cm">,</span> <span class="s">(</span><span class="i">$DataType</span><span class="cm">,</span> <span class="i">$Criterion</span><span class="cm">,</span> <span class="i">$Value</span><span class="s">)</span><span class="sc">;</span>
+ 535       <span class="s">}</span>
+ 536     <span class="s">}</span>
+ 537   <span class="s">}</span>
+ 538 <span class="s">}</span>
+ 539 
+ 540 <span class="c"># Setup navigation link information for multiple tables...</span>
+<a name="SetupMultipleTablesInfo-"></a> 541 <span class="k">sub </span><span class="m">SetupMultipleTablesInfo</span> <span class="s">{</span>
+ 542   <span class="k">my</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$LinesPerTable</span><span class="s">)</span><span class="sc">;</span>
+ 543 
+ 544   <span class="i">$LinesPerTable</span> = <span class="i">$Options</span>{<span class="w">numrows</span>}<span class="sc">;</span>
+ 545   <span class="i">@</span>{<span class="i">$TextFilesInfo</span>{<span class="w">TableCount</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 546   <span class="i">@</span>{<span class="i">$TextFilesInfo</span>{<span class="w">TableHTMLFiles</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 547   <span class="i">@</span>{<span class="i">$TextFilesInfo</span>{<span class="w">TableStartLineNum</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 548   <span class="i">@</span>{<span class="i">$TextFilesInfo</span>{<span class="w">TableEndLineNum</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 549 
+ 550   <span class="k">for</span> <span class="i">$Index</span> <span class="s">(</span><span class="n">0</span> .. <span class="i">$#TextFilesList</span><span class="s">)</span> <span class="s">{</span>
+ 551     <span class="i">$TextFilesInfo</span>{<span class="w">TableCount</span>}[<span class="i">$Index</span>] = <span class="n">1</span><span class="sc">;</span>
+ 552     <span class="i">@</span>{<span class="i">$TextFilesInfo</span>{<span class="w">TableHTMLFiles</span>}[<span class="i">$Index</span>]} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 553     <span class="i">@</span>{<span class="i">$TextFilesInfo</span>{<span class="w">TableStartLineNum</span>}[<span class="i">$Index</span>]} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 554     <span class="i">@</span>{<span class="i">$TextFilesInfo</span>{<span class="w">TableEndLineNum</span>}[<span class="i">$Index</span>]} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 555 
+ 556     <span class="k">if</span> <span class="s">(</span><span class="i">$TextFilesInfo</span>{<span class="w">FileOkay</span>}[<span class="i">$Index</span>]<span class="s">)</span> <span class="s">{</span>
+ 557       <span class="k">if</span> <span class="s">(</span><span class="i">$TextFilesInfo</span>{<span class="w">MultipleHTMLTables</span>}[<span class="i">$Index</span>]<span class="s">)</span> <span class="s">{</span>
+ 558         <span class="k">my</span><span class="s">(</span><span class="i">$TableIndex</span><span class="cm">,</span> <span class="i">$TotalLines</span><span class="cm">,</span> <span class="i">$TableCount</span><span class="cm">,</span> <span class="i">$TableStartLineNum</span><span class="cm">,</span> <span class="i">$TableEndLineNum</span><span class="cm">,</span> <span class="i">$Name</span><span class="s">)</span><span class="sc">;</span>
+ 559 
+ 560         <span class="i">$TotalLines</span> = <span class="i">$TextFilesInfo</span>{<span class="w">LineCount</span>}[<span class="i">$Index</span>]<span class="sc">;</span>
+ 561         <span class="i">$TableCount</span> = <span class="s">(</span><span class="i">$TotalLines</span> % <span class="i">$LinesPerTable</span><span class="s">)</span> ? <span class="s">(</span><span class="k">int</span><span class="s">(</span><span class="i">$TotalLines</span>/<span class="i">$LinesPerTable</span><span class="s">)</span> + <span class="n">1</span><span class="s">)</span> <span class="co">:</span> <span class="s">(</span><span class="i">$TotalLines</span>/<span class="i">$LinesPerTable</span><span class="s">)</span><span class="sc">;</span>
+ 562         <span class="i">$TextFilesInfo</span>{<span class="w">TableCount</span>}[<span class="i">$Index</span>] = <span class="i">$TableCount</span><span class="sc">;</span>
+ 563         <span class="k">for</span> <span class="i">$TableIndex</span> <span class="s">(</span><span class="n">1</span> .. <span class="i">$TableCount</span><span class="s">)</span> <span class="s">{</span>
+ 564           <span class="i">$TableStartLineNum</span> = <span class="s">(</span><span class="i">$TableIndex</span> - <span class="n">1</span><span class="s">)</span> * <span class="i">$LinesPerTable</span> + <span class="n">1</span><span class="sc">;</span>
+ 565           <span class="i">$TableEndLineNum</span> = <span class="s">(</span><span class="i">$TableIndex</span> == <span class="i">$TableCount</span><span class="s">)</span> ? <span class="i">$TotalLines</span> <span class="co">:</span> <span class="s">(</span><span class="i">$TableIndex</span> * <span class="i">$LinesPerTable</span><span class="s">)</span><span class="sc">;</span>
+ 566           <span class="k">push</span> <span class="i">@</span>{<span class="i">$TextFilesInfo</span>{<span class="w">TableStartLineNum</span>}[<span class="i">$Index</span>]}<span class="cm">,</span> <span class="i">$TableStartLineNum</span><span class="sc">;</span>
+ 567           <span class="k">push</span> <span class="i">@</span>{<span class="i">$TextFilesInfo</span>{<span class="w">TableEndLineNum</span>}[<span class="i">$Index</span>]}<span class="cm">,</span> <span class="i">$TableEndLineNum</span><span class="sc">;</span>
+ 568 
+ 569           <span class="c"># Setup HTML file names for all the tables...</span>
+ 570           <span class="i">$Name</span> = <span class="q">&quot;Lines&quot;</span> . <span class="q">&quot;$TableStartLineNum&quot;</span> . <span class="q">&quot;To&quot;</span> . <span class="q">&quot;$TableEndLineNum&quot;</span><span class="sc">;</span>
+ 571           <span class="k">if</span> <span class="s">(</span><span class="i">$TableIndex</span> == <span class="n">1</span><span class="s">)</span> <span class="s">{</span>
+ 572             <span class="i">$Name</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+ 573           <span class="s">}</span>
+ 574           <span class="i">$Name</span> = <span class="i">$TextFilesInfo</span>{<span class="w">HTMLRoot</span>}[<span class="i">$Index</span>] . <span class="i">$Name</span> . <span class="q">&quot;.html&quot;</span><span class="sc">;</span>
+ 575           <span class="k">push</span> <span class="i">@</span>{<span class="i">$TextFilesInfo</span>{<span class="w">TableHTMLFiles</span>}[<span class="i">$Index</span>]}<span class="cm">,</span> <span class="i">$Name</span><span class="sc">;</span>
+ 576         <span class="s">}</span>
+ 577         <span class="c">#print &quot;$TextFilesList[$Index]: $TableCount -  @{$TextFilesInfo{TableStartLineNum}[$Index]} - @{$TextFilesInfo{TableEndLineNum}[$Index]} -  @{$TextFilesInfo{TableHTMLFiles}[$Index]}\n&quot;;</span>
+ 578       <span class="s">}</span>
+ 579     <span class="s">}</span>
+ 580   <span class="s">}</span>
+ 581 <span class="s">}</span>
+ 582 
+ 583 <span class="c"># Setup HTML tags information...</span>
+<a name="SetupHTMLTagsInfo-"></a> 584 <span class="k">sub </span><span class="m">SetupHTMLTagsInfo</span> <span class="s">{</span>
+ 585   <span class="c"># Setup row tags...</span>
+ 586   <span class="i">$TextFilesInfo</span>{<span class="w">RowHeaderTags</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+ 587   <span class="i">$TextFilesInfo</span>{<span class="w">RowEndTags</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+ 588   <span class="i">$TextFilesInfo</span>{<span class="w">BgFilledOddRowHeaderTags</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+ 589   <span class="i">$TextFilesInfo</span>{<span class="w">BgFilledEvenRowHeaderTags</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+ 590   <span class="i">$TextFilesInfo</span>{<span class="w">TableRowHeaderTags</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+ 591 
+ 592   <span class="i">$TextFilesInfo</span>{<span class="w">RowHeaderTags</span>} = <span class="i">SetupHTMLTableRowHeader</span><span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">RowHAlignment</span>}<span class="cm">,</span> <span class="q">&quot;&quot;</span><span class="cm">,</span> <span class="i">$OptionsInfo</span>{<span class="w">RowVAlignment</span>}<span class="s">)</span><span class="sc">;</span>
+ 593   <span class="i">$TextFilesInfo</span>{<span class="w">RowEndTags</span>} = <span class="i">SetupHTMLTableRowEnd</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 594 
+ 595   <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">ShadeRowsStatus</span>}<span class="s">)</span> <span class="s">{</span>
+ 596     <span class="i">$TextFilesInfo</span>{<span class="w">BgFilledOddRowHeaderTags</span>} = <span class="i">SetupHTMLTableRowHeader</span><span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">RowHAlignment</span>}<span class="cm">,</span> <span class="i">$OptionsInfo</span>{<span class="w">OddRowsShadeColor</span>}<span class="cm">,</span> <span class="i">$OptionsInfo</span>{<span class="w">RowVAlignment</span>}<span class="s">)</span><span class="sc">;</span>
+ 597     <span class="i">$TextFilesInfo</span>{<span class="w">BgFilledEvenRowHeaderTags</span>} = <span class="i">SetupHTMLTableRowHeader</span><span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">RowHAlignment</span>}<span class="cm">,</span> <span class="i">$OptionsInfo</span>{<span class="w">EvenRowsShadeColor</span>}<span class="cm">,</span> <span class="i">$OptionsInfo</span>{<span class="w">RowVAlignment</span>}<span class="s">)</span><span class="sc">;</span>
+ 598   <span class="s">}</span>
+ 599 
+ 600   <span class="i">$TextFilesInfo</span>{<span class="w">TableRowHeaderTags</span>} = <span class="i">SetupHTMLTableRowHeader</span><span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">TableHeaderRowHAlignment</span>}<span class="cm">,</span> <span class="i">$OptionsInfo</span>{<span class="w">TableHeaderRowColor</span>}<span class="cm">,</span> <span class="i">$OptionsInfo</span>{<span class="w">TableHeaderRowVAlignment</span>}<span class="s">)</span><span class="sc">;</span>
+ 601 
+ 602 <span class="s">}</span>
+ 603 
+ 604 <span class="c">#Make sure appropriate mode specific option values are specified...</span>
+<a name="ProcessOptions-"></a> 605 <span class="k">sub </span><span class="m">ProcessOptions</span> <span class="s">{</span>
+ 606 
+ 607   <span class="i">%OptionsInfo</span> = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 608 
+ 609   <span class="i">$OptionsInfo</span>{<span class="w">RowHAlignment</span>} = <span class="q">&quot;left&quot;</span><span class="sc">;</span> <span class="i">$OptionsInfo</span>{<span class="w">RowVAlignment</span>} = <span class="q">&quot;middle&quot;</span><span class="sc">;</span>
+ 610   <span class="k">if</span> <span class="s">(</span><span class="k">exists</span><span class="s">(</span><span class="i">$Options</span>{<span class="w">align</span>}<span class="s">)</span><span class="s">)</span> <span class="s">{</span>
+ 611     <span class="k">my</span> <span class="s">(</span><span class="i">@AlignValues</span><span class="s">)</span> = <span class="k">split</span> <span class="q">&quot;,&quot;</span><span class="cm">,</span> <span class="i">$Options</span>{<span class="w">align</span>}<span class="sc">;</span>
+ 612     <span class="k">if</span> <span class="s">(</span><span class="i">@AlignValues</span> == <span class="n">2</span><span class="s">)</span> <span class="s">{</span>
+ 613       <span class="i">$OptionsInfo</span>{<span class="w">RowHAlignment</span>} = <span class="i">$AlignValues</span>[<span class="n">0</span>]<span class="sc">;</span>
+ 614       <span class="i">$OptionsInfo</span>{<span class="w">RowVAlignment</span>} = <span class="i">$AlignValues</span>[<span class="n">1</span>]<span class="sc">;</span>
+ 615     <span class="s">}</span>
+ 616     <span class="k">elsif</span> <span class="s">(</span><span class="i">@AlignValues</span> == <span class="n">1</span><span class="s">)</span> <span class="s">{</span>
+ 617       <span class="i">$OptionsInfo</span>{<span class="w">RowHAlignment</span>} = <span class="i">$AlignValues</span>[<span class="n">0</span>]<span class="sc">;</span>
+ 618     <span class="s">}</span>
+ 619     <span class="k">else</span> <span class="s">{</span>
+ 620       <span class="k">die</span> <span class="q">&quot;Error: Invalid number of values, &quot;</span><span class="cm">,</span> <span class="k">scalar</span><span class="s">(</span><span class="i">@AlignValues</span><span class="s">)</span> <span class="cm">,</span> <span class="q">&quot;, specified by \&quot;-a --align\&quot; option.\nIt must contain only one or two value.\n&quot;</span><span class="sc">;</span>
+ 621     <span class="s">}</span>
+ 622     <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">RowHAlignment</span>} !~ <span class="q">/^(left|center|right)$/i</span><span class="s">)</span> <span class="s">{</span>
+ 623       <span class="k">die</span> <span class="q">&quot;Error: The horizontal alignment value specified, $Options{align}, for option \&quot;-a --align\&quot; is not valid. Allowed values: left, center, or right\n&quot;</span><span class="sc">;</span>
+ 624     <span class="s">}</span>
+ 625     <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">RowVAlignment</span>} !~ <span class="q">/^(top|middle|bottom)$/i</span><span class="s">)</span> <span class="s">{</span>
+ 626       <span class="k">die</span> <span class="q">&quot;Error: The horizontal alignment value specified, $Options{align}, for option \&quot;-a --align\&quot; is not valid. Allowed values: top, middle, or bottom\n&quot;</span><span class="sc">;</span>
+ 627     <span class="s">}</span>
+ 628   <span class="s">}</span>
+ 629 
+ 630   <span class="i">$OptionsInfo</span>{<span class="w">TableHeaderRowHAlignment</span>} = <span class="q">&quot;center&quot;</span><span class="sc">;</span> <span class="i">$OptionsInfo</span>{<span class="w">TableHeaderRowVAlignment</span>} = <span class="q">&quot;middle&quot;</span><span class="sc">;</span>
+ 631   <span class="k">if</span> <span class="s">(</span><span class="k">exists</span><span class="s">(</span><span class="i">$Options</span>{<span class="w">headeralign</span>}<span class="s">)</span><span class="s">)</span> <span class="s">{</span>
+ 632     <span class="k">my</span> <span class="s">(</span><span class="i">@AlignValues</span><span class="s">)</span> = <span class="k">split</span> <span class="q">&quot;,&quot;</span><span class="cm">,</span> <span class="i">$Options</span>{<span class="w">headeralign</span>}<span class="sc">;</span>
+ 633     <span class="k">if</span> <span class="s">(</span><span class="i">@AlignValues</span> == <span class="n">2</span><span class="s">)</span> <span class="s">{</span>
+ 634       <span class="i">$OptionsInfo</span>{<span class="w">TableHeaderRowHAlignment</span>} = <span class="i">$AlignValues</span>[<span class="n">0</span>]<span class="sc">;</span>
+ 635       <span class="i">$OptionsInfo</span>{<span class="w">TableHeaderRowVAlignment</span>} = <span class="i">$AlignValues</span>[<span class="n">1</span>]<span class="sc">;</span>
+ 636     <span class="s">}</span>
+ 637     <span class="k">elsif</span> <span class="s">(</span><span class="i">@AlignValues</span> == <span class="n">1</span><span class="s">)</span> <span class="s">{</span>
+ 638       <span class="i">$OptionsInfo</span>{<span class="w">TableHeaderRowHAlignment</span>} = <span class="i">$AlignValues</span>[<span class="n">0</span>]<span class="sc">;</span>
+ 639     <span class="s">}</span>
+ 640     <span class="k">else</span> <span class="s">{</span>
+ 641       <span class="k">die</span> <span class="q">&quot;Error: Invalid number of values, &quot;</span><span class="cm">,</span> <span class="k">scalar</span><span class="s">(</span><span class="i">@AlignValues</span><span class="s">)</span> <span class="cm">,</span> <span class="q">&quot;, specified by \&quot;--headeralign\&quot; option.\nIt must contain only one or two value.\n&quot;</span><span class="sc">;</span>
+ 642     <span class="s">}</span>
+ 643     <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">TableHeaderRowHAlignment</span>} !~ <span class="q">/^(left|center|right)$/i</span><span class="s">)</span> <span class="s">{</span>
+ 644       <span class="k">die</span> <span class="q">&quot;Error: The horizontal alignment value specified, $Options{headeralign}, for option \&quot;--headeralign\&quot; is not valid. Allowed values: left, center, or right\n&quot;</span><span class="sc">;</span>
+ 645     <span class="s">}</span>
+ 646     <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">TableHeaderRowVAlignment</span>} !~ <span class="q">/^(top|middle|bottom)$/i</span><span class="s">)</span> <span class="s">{</span>
+ 647       <span class="k">die</span> <span class="q">&quot;Error: The horizontal alignment value specified, $Options{headeralign}, for option \&quot;-a --headeralign\&quot; is not valid. Allowed values: top, middle, or bottom\n&quot;</span><span class="sc">;</span>
+ 648     <span class="s">}</span>
+ 649   <span class="s">}</span>
+ 650 
+ 651   <span class="i">$OptionsInfo</span>{<span class="w">TitleDisplay</span>} = <span class="s">(</span><span class="i">$Options</span>{<span class="w">titledisplay</span>} =~ <span class="q">/^yes$/i</span><span class="s">)</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span>
+ 652 
+ 653   <span class="k">if</span> <span class="s">(</span><span class="k">exists</span><span class="s">(</span><span class="i">$Options</span>{<span class="w">border</span>}<span class="s">)</span><span class="s">)</span> <span class="s">{</span>
+ 654     <span class="i">$OptionsInfo</span>{<span class="w">TableBorder</span>} = <span class="i">$Options</span>{<span class="w">border</span>}<span class="sc">;</span>
+ 655   <span class="s">}</span>
+ 656   <span class="k">else</span> <span class="s">{</span>
+ 657     <span class="i">$OptionsInfo</span>{<span class="w">TableBorder</span>} = <span class="s">(</span><span class="i">$Options</span>{<span class="w">mode</span>} =~ <span class="q">/^(plain|highlight)$/i</span><span class="s">)</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span>
+ 658   <span class="s">}</span>
+ 659   <span class="i">$OptionsInfo</span>{<span class="w">TableCellPadding</span>} = <span class="i">$Options</span>{<span class="w">cellpadding</span>}<span class="sc">;</span>
+ 660   <span class="i">$OptionsInfo</span>{<span class="w">TableCellSpacing</span>} = <span class="i">$Options</span>{<span class="w">cellspacing</span>}<span class="sc">;</span>
+ 661   <span class="i">$OptionsInfo</span>{<span class="w">Footer</span>} = <span class="i">$Options</span>{<span class="w">footer</span>} ? <span class="i">$Options</span>{<span class="w">footer</span>} <span class="co">:</span> <span class="q">&quot;&quot;</span><span class="sc">;</span>
+ 662 
+ 663   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">headercolor</span>}<span class="s">)</span> <span class="s">{</span>
+ 664     <span class="i">$OptionsInfo</span>{<span class="w">TableHeaderRowColor</span>} = <span class="i">$Options</span>{<span class="w">headercolor</span>}<span class="sc">;</span>
+ 665   <span class="s">}</span>
+ 666   <span class="k">else</span> <span class="s">{</span>
+ 667     <span class="i">$OptionsInfo</span>{<span class="w">TableHeaderRowColor</span>} = <span class="s">(</span><span class="i">$Options</span>{<span class="w">mode</span>} =~ <span class="q">/^plain$/i</span><span class="s">)</span> ? <span class="q">&quot;&quot;</span> <span class="co">:</span> <span class="q">&quot;#ccccff&quot;</span><span class="sc">;</span>
+ 668   <span class="s">}</span>
+ 669 
+ 670   <span class="i">$OptionsInfo</span>{<span class="w">NavLinksAtBottom</span>} = <span class="n">1</span><span class="sc">;</span> <span class="i">$OptionsInfo</span>{<span class="w">NavLinksAtTop</span>} = <span class="n">0</span><span class="sc">;</span>
+ 671   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">displaylinks</span>} =~ <span class="q">/^(both|top)$/i</span><span class="s">)</span> <span class="s">{</span>
+ 672     <span class="i">$OptionsInfo</span>{<span class="w">NavLinksAtTop</span>} = <span class="n">1</span><span class="sc">;</span>
+ 673   <span class="s">}</span>
+ 674   <span class="i">$OptionsInfo</span>{<span class="w">NavLinksTableInfo</span>} = <span class="n">1</span><span class="sc">;</span> <span class="i">$OptionsInfo</span>{<span class="w">NavLinksLineInfo</span>} = <span class="n">0</span><span class="sc">;</span>
+ 675   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">displaylinksinfo</span>} =~ <span class="q">/^both$/i</span><span class="s">)</span> <span class="s">{</span>
+ 676     <span class="i">$OptionsInfo</span>{<span class="w">NavLinksLineInfo</span>} = <span class="n">1</span><span class="sc">;</span>
+ 677     <span class="i">$OptionsInfo</span>{<span class="w">NavLinksTableInfo</span>} = <span class="n">1</span><span class="sc">;</span>
+ 678   <span class="s">}</span>
+ 679   <span class="k">elsif</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">displaylinksinfo</span>} =~ <span class="q">/^line$/i</span><span class="s">)</span> <span class="s">{</span>
+ 680     <span class="i">$OptionsInfo</span>{<span class="w">NavLinksLineInfo</span>} = <span class="n">1</span><span class="sc">;</span>
+ 681     <span class="i">$OptionsInfo</span>{<span class="w">NavLinksTableInfo</span>} = <span class="n">0</span><span class="sc">;</span>
+ 682   <span class="s">}</span>
+ 683 
+ 684   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">stylesheet</span>} =~ <span class="q">/^old$/i</span> <span class="s">)</span> <span class="s">{</span>
+ 685     <span class="k">if</span> <span class="s">(</span>!<span class="i">$Options</span>{<span class="w">stylesheetname</span>}<span class="s">)</span> <span class="s">{</span>
+ 686       <span class="k">die</span> <span class="q">&quot;Error: No stylesheet name specified using \&quot;--stylesheetname\&quot; option: It is required for \&quot;old\&quot; value of \&quot;-s --stylesheet\&quot; option. \n&quot;</span><span class="sc">;</span>
+ 687     <span class="s">}</span>
+ 688   <span class="s">}</span>
+ 689 
+ 690   <span class="k">my</span><span class="s">(</span><span class="i">@ColorValues</span><span class="s">)</span><span class="sc">;</span>
+ 691   <span class="i">$OptionsInfo</span>{<span class="w">OddRowsShadeColor</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="i">$OptionsInfo</span>{<span class="w">EvenRowsShadeColor</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="i">$OptionsInfo</span>{<span class="w">ShadeRowsStatus</span>} = <span class="n">0</span><span class="sc">;</span>
+ 692   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">mode</span>} =~ <span class="q">/^(shade|shadedhighlight)$/i</span><span class="s">)</span> <span class="s">{</span>
+ 693     <span class="i">$OptionsInfo</span>{<span class="w">OddRowsShadeColor</span>} = <span class="q">&quot;#ffffff&quot;</span><span class="sc">;</span>
+ 694     <span class="i">$OptionsInfo</span>{<span class="w">EvenRowsShadeColor</span>} = <span class="q">&quot;#e0e0eb&quot;</span><span class="sc">;</span>
+ 695     <span class="i">$OptionsInfo</span>{<span class="w">ShadeRowsStatus</span>} = <span class="n">1</span><span class="sc">;</span>
+ 696     <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">shadecolor</span>}<span class="s">)</span> <span class="s">{</span>
+ 697       <span class="c"># Make sure only two value are specified...</span>
+ 698       <span class="i">@ColorValues</span> = <span class="k">split</span> <span class="q">&quot;,&quot;</span><span class="cm">,</span> <span class="i">$Options</span>{<span class="w">shadecolor</span>}<span class="sc">;</span>
+ 699       <span class="k">if</span> <span class="s">(</span><span class="i">@ColorValues</span> == <span class="n">2</span><span class="s">)</span> <span class="s">{</span>
+ 700         <span class="i">$OptionsInfo</span>{<span class="w">OddRowsShadeColor</span>} = <span class="i">$ColorValues</span>[<span class="n">0</span>]<span class="sc">;</span>
+ 701         <span class="i">$OptionsInfo</span>{<span class="w">EvenRowsShadeColor</span>} = <span class="i">$ColorValues</span>[<span class="n">1</span>]<span class="sc">;</span>
+ 702       <span class="s">}</span>
+ 703       <span class="k">else</span> <span class="s">{</span>
+ 704         <span class="k">die</span> <span class="q">&quot;Error: Invalid number of values, &quot;</span><span class="cm">,</span> <span class="k">scalar</span><span class="s">(</span><span class="i">@ColorValues</span><span class="s">)</span> <span class="cm">,</span> <span class="q">&quot;, specified by \&quot;--shadecolor\&quot; option.\nIt must contain only two values.\n&quot;</span><span class="sc">;</span>
+ 705       <span class="s">}</span>
+ 706     <span class="s">}</span>
+ 707   <span class="s">}</span>
+ 708   <span class="i">$OptionsInfo</span>{<span class="w">ValueOkColor</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="i">$OptionsInfo</span>{<span class="w">ValueNotOkColor</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="i">$OptionsInfo</span>{<span class="w">HighlightStatus</span>} = <span class="n">0</span><span class="sc">;</span>
+ 709   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">mode</span>} =~ <span class="q">/^(highlight|shadedhighlight)$/i</span><span class="s">)</span> <span class="s">{</span>
+ 710     <span class="k">my</span><span class="s">(</span><span class="i">$HighlightMode</span><span class="cm">,</span> <span class="i">$HighlightBy</span><span class="s">)</span><span class="sc">;</span>
+ 711     <span class="i">$HighlightMode</span> = <span class="i">$Options</span>{<span class="w">mode</span>}<span class="sc">;</span> <span class="i">$HighlightBy</span> = <span class="i">$Options</span>{<span class="w">highlightby</span>}<span class="sc">;</span>
+ 712 
+ 713     <span class="i">$OptionsInfo</span>{<span class="w">HighlightStatus</span>} = <span class="n">1</span><span class="sc">;</span>
+ 714     <span class="i">$OptionsInfo</span>{<span class="w">ValueOkColor</span>} = <span class="q">&quot;#0fff0f&quot;</span><span class="sc">;</span>
+ 715     <span class="i">$OptionsInfo</span>{<span class="w">ValueNotOkColor</span>} = <span class="q">&quot;#ff0f0f&quot;</span><span class="sc">;</span>
+ 716     <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">highlightstyle</span>} =~ <span class="q">/^text$/i</span><span class="s">)</span> <span class="s">{</span>
+ 717       <span class="i">$OptionsInfo</span>{<span class="w">ValueOkColor</span>} = <span class="q">&quot;#0fbb0f&quot;</span><span class="sc">;</span>
+ 718       <span class="i">$OptionsInfo</span>{<span class="w">ValueNotOkColor</span>} = <span class="q">&quot;#ff0f0f&quot;</span><span class="sc">;</span>
+ 719     <span class="s">}</span>
+ 720     <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">highlightcolor</span>}<span class="s">)</span> <span class="s">{</span>
+ 721       <span class="c"># Make sure two values are specified...</span>
+ 722       <span class="i">@ColorValues</span> = <span class="k">split</span> <span class="q">&quot;,&quot;</span><span class="cm">,</span> <span class="i">$Options</span>{<span class="w">highlightcolor</span>}<span class="sc">;</span>
+ 723       <span class="k">if</span> <span class="s">(</span><span class="i">@ColorValues</span> == <span class="n">2</span><span class="s">)</span> <span class="s">{</span>
+ 724         <span class="i">$OptionsInfo</span>{<span class="w">ValueOkColor</span>} = <span class="i">$ColorValues</span>[<span class="n">0</span>]<span class="sc">;</span>
+ 725         <span class="i">$OptionsInfo</span>{<span class="w">ValueNotOkColor</span>} = <span class="i">$ColorValues</span>[<span class="n">1</span>]<span class="sc">;</span>
+ 726       <span class="s">}</span>
+ 727       <span class="k">else</span> <span class="s">{</span>
+ 728         <span class="k">die</span> <span class="q">&quot;Error: Invalid number of values, &quot;</span><span class="cm">,</span> <span class="k">scalar</span><span class="s">(</span><span class="i">@ColorValues</span><span class="s">)</span><span class="cm">,</span> <span class="q">&quot;, specified by \&quot;--highlightcolor\&quot; option.\nIt must contain only two value for $HighlightMode value specified using \&quot;-m --mode\&quot; option.\n&quot;</span><span class="sc">;</span>
+ 729       <span class="s">}</span>
+ 730     <span class="s">}</span>
+ 731     <span class="k">if</span> <span class="s">(</span>!<span class="i">$Options</span>{<span class="w">highlight</span>}<span class="s">)</span> <span class="s">{</span>
+ 732       <span class="k">die</span> <span class="q">&quot;Error: Specify columns to be highlighted using \&quot;--hightlight\&quot; option\n&quot;</span><span class="sc">;</span>
+ 733     <span class="s">}</span>
+ 734     <span class="c"># Retrieve quartet values from &quot;hightlight&quot; option...</span>
+ 735     <span class="k">my</span><span class="s">(</span><span class="i">@HighlightValueQuartets</span><span class="s">)</span><span class="sc">;</span>
+ 736 
+ 737     <span class="i">@HighlightValueQuartets</span> = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 738     <span class="i">@HighlightValueQuartets</span> = <span class="k">split</span> <span class="q">&quot;,&quot;</span><span class="cm">,</span> <span class="i">$Options</span>{<span class="w">highlight</span>}<span class="sc">;</span>
+ 739     <span class="k">if</span> <span class="s">(</span><span class="s">(</span><span class="i">@HighlightValueQuartets</span> % <span class="n">4</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span>
+ 740       <span class="k">die</span> <span class="q">&quot;Error: Quartets not found in values specified using \&quot;--highlight\&quot; option for $HighlightMode \&quot;-m --mode\&quot;\n&quot;</span><span class="sc">;</span>
+ 741     <span class="s">}</span>
+ 742     <span class="c"># Process quartets...</span>
+ 743     <span class="k">my</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$Col</span><span class="cm">,</span> <span class="i">$DataType</span><span class="cm">,</span> <span class="i">$Criterion</span><span class="cm">,</span> <span class="i">$Value</span><span class="s">)</span><span class="sc">;</span>
+ 744 
+ 745     <span class="i">@</span>{<span class="i">$OptionsInfo</span>{<span class="w">SpecifiedColIds</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 746     <span class="i">@</span>{<span class="i">$OptionsInfo</span>{<span class="w">SpecifiedColDataTypes</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 747     <span class="i">@</span>{<span class="i">$OptionsInfo</span>{<span class="w">SpecifiedColCriteria</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 748     <span class="i">@</span>{<span class="i">$OptionsInfo</span>{<span class="w">SpecifiedColValues</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 749     <span class="k">for</span> <span class="s">(</span><span class="i">$Index</span> = <span class="n">0</span><span class="sc">;</span> <span class="i">$Index</span> &lt; <span class="i">@HighlightValueQuartets</span><span class="sc">;</span> <span class="i">$Index</span> = <span class="i">$Index</span> + <span class="n">4</span><span class="s">)</span> <span class="s">{</span>
+ 750       <span class="i">$Col</span> = <span class="i">$HighlightValueQuartets</span>[<span class="i">$Index</span>]<span class="sc">;</span>
+ 751       <span class="i">$DataType</span> = <span class="i">$HighlightValueQuartets</span>[<span class="i">$Index</span> + <span class="n">1</span>]<span class="sc">;</span>
+ 752       <span class="i">$Criterion</span> = <span class="i">$HighlightValueQuartets</span>[<span class="i">$Index</span> + <span class="n">2</span>]<span class="sc">;</span>
+ 753       <span class="i">$Value</span> = <span class="i">$HighlightValueQuartets</span>[<span class="i">$Index</span> + <span class="n">3</span>]<span class="sc">;</span>
+ 754       <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">highlightby</span>} =~ <span class="q">/^colnum$/i</span> <span class="s">)</span> <span class="s">{</span>
+ 755         <span class="k">if</span> <span class="s">(</span>!<span class="i">IsPositiveInteger</span><span class="s">(</span><span class="i">$Col</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span>
+ 756           <span class="k">die</span> <span class="q">&quot;Error: Invalid column id, $Col, specified in quartet, \&quot;$Col,$DataType,$Criterion,$Value\&quot;, using \&quot;--hightlight\&quot; option: It must be an integer value &gt; 0 for $HighlightMode \&quot;-m --mode\&quot; and $HighlightBy \&quot;--highlightby\&quot; option values.\n&quot;</span><span class="sc">;</span>
+ 757         <span class="s">}</span>
+ 758       <span class="s">}</span>
+ 759       <span class="k">if</span> <span class="s">(</span><span class="i">$DataType</span> !~ <span class="q">/^(numeric|text)$/i</span><span class="s">)</span> <span class="s">{</span>
+ 760         <span class="k">die</span> <span class="q">&quot;Error: Invalid column data type, $DataType, specified in quartet, \&quot;$Col,$DataType,$Criterion,$Value\&quot;, using \&quot;--hightlight\&quot; option: Valid values: numeric or text\n&quot;</span><span class="sc">;</span>
+ 761       <span class="s">}</span>
+ 762       <span class="k">if</span> <span class="s">(</span><span class="i">$Criterion</span> !~ <span class="q">/^(eq|le|ge)$/i</span><span class="s">)</span> <span class="s">{</span>
+ 763         <span class="k">die</span> <span class="q">&quot;Error: Invalid criterion value, $Criterion, specified in quartet, \&quot;$Col,$DataType,$Criterion,$Value\&quot;, using \&quot;--hightlight\&quot; option: Valid values: le, ge, or eq\n&quot;</span><span class="sc">;</span>
+ 764       <span class="s">}</span>
+ 765       <span class="k">if</span> <span class="s">(</span><span class="i">$DataType</span> =~ <span class="q">/^numeric$/i</span><span class="s">)</span> <span class="s">{</span>
+ 766         <span class="k">if</span> <span class="s">(</span>!<span class="i">IsFloat</span><span class="s">(</span><span class="i">$Value</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span>
+ 767           <span class="k">die</span> <span class="q">&quot;Error: Invalid criterion value, $Value, specified in quartet, \&quot;$Col,$DataType,$Criterion,$Value\&quot;, using \&quot;--hightlight\&quot; option: numeric value required for numeric data type\n&quot;</span><span class="sc">;</span>
+ 768         <span class="s">}</span>
+ 769       <span class="s">}</span>
+ 770       <span class="k">push</span> <span class="i">@</span>{<span class="i">$OptionsInfo</span>{<span class="w">SpecifiedColIds</span>}}<span class="cm">,</span> <span class="i">$Col</span><span class="sc">;</span>
+ 771       <span class="k">push</span> <span class="i">@</span>{<span class="i">$OptionsInfo</span>{<span class="w">SpecifiedColDataTypes</span>}}<span class="cm">,</span> <span class="i">$DataType</span><span class="sc">;</span>
+ 772       <span class="k">push</span> <span class="i">@</span>{<span class="i">$OptionsInfo</span>{<span class="w">SpecifiedColCriteria</span>}}<span class="cm">,</span> <span class="i">$Criterion</span><span class="sc">;</span>
+ 773       <span class="k">push</span> <span class="i">@</span>{<span class="i">$OptionsInfo</span>{<span class="w">SpecifiedColValues</span>}}<span class="cm">,</span> <span class="i">$Value</span><span class="sc">;</span>
+ 774     <span class="s">}</span>
+ 775   <span class="s">}</span>
+ 776 <span class="s">}</span>
+ 777 
+ 778 <span class="c"># Retrieve information about input text files...</span>
+<a name="RetrieveTextFilesInfo-"></a> 779 <span class="k">sub </span><span class="m">RetrieveTextFilesInfo</span> <span class="s">{</span>
+ 780   <span class="k">my</span><span class="s">(</span><span class="i">$LineCount</span><span class="cm">,</span> <span class="i">$TextFile</span><span class="cm">,</span> <span class="i">$FileDir</span><span class="cm">,</span> <span class="i">$FileName</span><span class="cm">,</span> <span class="i">$HTMLFile</span><span class="cm">,</span> <span class="i">$CSSFile</span><span class="cm">,</span> <span class="i">$HTMLRoot</span><span class="cm">,</span> <span class="i">$HTMLTitle</span><span class="cm">,</span> <span class="i">$FileExt</span><span class="cm">,</span> <span class="i">$Index</span><span class="cm">,</span> <span class="i">$ColIndex</span><span class="cm">,</span> <span class="i">$ColNum</span><span class="cm">,</span> <span class="i">$ColLabel</span><span class="cm">,</span> <span class="i">$LinesCount</span><span class="cm">,</span> <span class="i">$InDelim</span><span class="cm">,</span> <span class="i">$Line</span><span class="cm">,</span> <span class="i">@LineWords</span><span class="cm">,</span> <span class="i">@ColLabels</span><span class="cm">,</span> <span class="i">$TopHTMLDir</span><span class="s">)</span><span class="sc">;</span>
+ 781 
+ 782   <span class="i">%TextFilesInfo</span> = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 783 
+ 784   <span class="i">@</span>{<span class="i">$TextFilesInfo</span>{<span class="w">FileOkay</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 785   <span class="i">@</span>{<span class="i">$TextFilesInfo</span>{<span class="w">ColCount</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 786   <span class="i">@</span>{<span class="i">$TextFilesInfo</span>{<span class="w">ColLabels</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 787   <span class="i">@</span>{<span class="i">$TextFilesInfo</span>{<span class="w">ColLabelToNumMap</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 788   <span class="i">@</span>{<span class="i">$TextFilesInfo</span>{<span class="w">LineCount</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 789   <span class="i">@</span>{<span class="i">$TextFilesInfo</span>{<span class="w">InDelim</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 790 
+ 791   <span class="i">@</span>{<span class="i">$TextFilesInfo</span>{<span class="w">HTMLRoot</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 792   <span class="i">@</span>{<span class="i">$TextFilesInfo</span>{<span class="w">HTMLTitle</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 793   <span class="i">@</span>{<span class="i">$TextFilesInfo</span>{<span class="w">MultipleHTMLTables</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 794 
+ 795   <span class="i">@</span>{<span class="i">$TextFilesInfo</span>{<span class="w">TopHTMLDir</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 796   <span class="i">@</span>{<span class="i">$TextFilesInfo</span>{<span class="w">SubHTMLDir</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 797 
+ 798   <span class="j">FILELIST:</span> <span class="k">for</span> <span class="i">$Index</span> <span class="s">(</span><span class="n">0</span> .. <span class="i">$#TextFilesList</span><span class="s">)</span> <span class="s">{</span>
+ 799     <span class="i">$TextFile</span> = <span class="i">$TextFilesList</span>[<span class="i">$Index</span>]<span class="sc">;</span>
+ 800 
+ 801     <span class="i">$TextFilesInfo</span>{<span class="w">FileOkay</span>}[<span class="i">$Index</span>] = <span class="n">0</span><span class="sc">;</span>
+ 802     <span class="i">$TextFilesInfo</span>{<span class="w">ColCount</span>}[<span class="i">$Index</span>] = <span class="n">0</span><span class="sc">;</span>
+ 803     <span class="i">$TextFilesInfo</span>{<span class="w">LineCount</span>}[<span class="i">$Index</span>] = <span class="n">0</span><span class="sc">;</span>
+ 804     <span class="i">$TextFilesInfo</span>{<span class="w">InDelim</span>}[<span class="i">$Index</span>] = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+ 805     <span class="i">$TextFilesInfo</span>{<span class="w">HTMLRoot</span>}[<span class="i">$Index</span>] = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+ 806     <span class="i">$TextFilesInfo</span>{<span class="w">HTMLTitle</span>}[<span class="i">$Index</span>] = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+ 807     <span class="i">$TextFilesInfo</span>{<span class="w">MultipleHTMLTables</span>}[<span class="i">$Index</span>] = <span class="n">0</span><span class="sc">;</span>
+ 808 
+ 809     <span class="i">@</span>{<span class="i">$TextFilesInfo</span>{<span class="w">ColLabels</span>}[<span class="i">$Index</span>]} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 810     <span class="i">%</span>{<span class="i">$TextFilesInfo</span>{<span class="w">ColLabelToNumMap</span>}[<span class="i">$Index</span>]} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 811 
+ 812     <span class="k">if</span> <span class="s">(</span>!<span class="s">(</span><span class="k">-e</span> <span class="i">$TextFile</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span>
+ 813       <span class="k">warn</span> <span class="q">&quot;Warning: Ignoring file $TextFile: It doesn&#39;t exist\n&quot;</span><span class="sc">;</span>
+ 814       <span class="k">next</span> <span class="j">FILELIST</span><span class="sc">;</span>
+ 815     <span class="s">}</span>
+ 816     <span class="k">if</span> <span class="s">(</span>!<span class="i">CheckFileType</span><span class="s">(</span><span class="i">$TextFile</span><span class="cm">,</span> <span class="q">&quot;csv tsv&quot;</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span>
+ 817       <span class="k">warn</span> <span class="q">&quot;Warning: Ignoring file $TextFile: It&#39;s not a csv or tsv file\n&quot;</span><span class="sc">;</span>
+ 818       <span class="k">next</span> <span class="j">FILELIST</span><span class="sc">;</span>
+ 819     <span class="s">}</span>
+ 820     <span class="s">(</span><span class="i">$FileDir</span><span class="cm">,</span> <span class="i">$FileName</span><span class="cm">,</span> <span class="i">$FileExt</span><span class="s">)</span> = <span class="i">ParseFileName</span><span class="s">(</span><span class="i">$TextFile</span><span class="s">)</span><span class="sc">;</span>
+ 821     <span class="k">if</span> <span class="s">(</span><span class="i">$FileExt</span> =~ <span class="q">/^tsv$/i</span><span class="s">)</span> <span class="s">{</span>
+ 822       <span class="i">$InDelim</span> = <span class="q">&quot;\t&quot;</span><span class="sc">;</span>
+ 823     <span class="s">}</span>
+ 824     <span class="k">else</span> <span class="s">{</span>
+ 825       <span class="i">$InDelim</span> = <span class="q">&quot;\,&quot;</span><span class="sc">;</span>
+ 826       <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">indelim</span>} !~ <span class="q">/^(comma|semicolon)$/i</span><span class="s">)</span> <span class="s">{</span>
+ 827         <span class="k">warn</span> <span class="q">&quot;Warning: Ignoring file $TextFile: The value specified, $Options{indelim}, for option \&quot;--indelim\&quot; is not valid for csv files\n&quot;</span><span class="sc">;</span>
+ 828         <span class="k">next</span> <span class="j">FILELIST</span><span class="sc">;</span>
+ 829       <span class="s">}</span>
+ 830       <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">indelim</span>} =~ <span class="q">/^semicolon$/i</span><span class="s">)</span> <span class="s">{</span>
+ 831         <span class="i">$InDelim</span> = <span class="q">&quot;\;&quot;</span><span class="sc">;</span>
+ 832       <span class="s">}</span>
+ 833     <span class="s">}</span>
+ 834 
+ 835     <span class="k">if</span> <span class="s">(</span>!<span class="k">open</span> <span class="w">TEXTFILE</span><span class="cm">,</span> <span class="q">&quot;$TextFile&quot;</span><span class="s">)</span> <span class="s">{</span>
+ 836       <span class="k">warn</span> <span class="q">&quot;Warning: Ignoring file $TextFile: Couldn&#39;t open it: $! \n&quot;</span><span class="sc">;</span>
+ 837       <span class="k">next</span> <span class="j">FILELIST</span><span class="sc">;</span>
+ 838     <span class="s">}</span>
+ 839 
+ 840     <span class="i">$Line</span> = <span class="i">GetTextLine</span><span class="s">(</span>\<span class="i">*TEXTFILE</span><span class="s">)</span><span class="sc">;</span>
+ 841     <span class="i">@ColLabels</span> = <span class="i">quotewords</span><span class="s">(</span><span class="i">$InDelim</span><span class="cm">,</span> <span class="n">0</span><span class="cm">,</span> <span class="i">$Line</span><span class="s">)</span><span class="sc">;</span>
+ 842     <span class="i">$LineCount</span> = <span class="n">0</span><span class="sc">;</span>
+ 843     <span class="k">while</span> <span class="s">(</span><span class="q">&lt;TEXTFILE&gt;</span><span class="s">)</span> <span class="s">{</span>
+ 844       <span class="i">$LineCount</span>++<span class="sc">;</span>
+ 845     <span class="s">}</span>
+ 846     <span class="k">close</span> <span class="w">TEXTFILE</span><span class="sc">;</span>
+ 847 
+ 848     <span class="i">$FileDir</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="i">$FileName</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="i">$FileExt</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+ 849     <span class="s">(</span><span class="i">$FileDir</span><span class="cm">,</span> <span class="i">$FileName</span><span class="cm">,</span> <span class="i">$FileExt</span><span class="s">)</span> = <span class="i">ParseFileName</span><span class="s">(</span><span class="i">$TextFile</span><span class="s">)</span><span class="sc">;</span>
+ 850     <span class="i">$HTMLRoot</span> = <span class="i">$FileName</span><span class="sc">;</span>
+ 851     <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">root</span>} &amp;&amp; <span class="s">(</span><span class="i">@TextFilesList</span> == <span class="n">1</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span>
+ 852       <span class="k">my</span> <span class="s">(</span><span class="i">$RootFileDir</span><span class="cm">,</span> <span class="i">$RootFileName</span><span class="cm">,</span> <span class="i">$RootFileExt</span><span class="s">)</span> = <span class="i">ParseFileName</span><span class="s">(</span><span class="i">$Options</span>{<span class="w">root</span>}<span class="s">)</span><span class="sc">;</span>
+ 853       <span class="k">if</span> <span class="s">(</span><span class="i">$RootFileName</span> &amp;&amp; <span class="i">$RootFileExt</span><span class="s">)</span> <span class="s">{</span>
+ 854         <span class="i">$HTMLRoot</span> = <span class="i">$RootFileName</span><span class="sc">;</span>
+ 855       <span class="s">}</span>
+ 856       <span class="k">else</span> <span class="s">{</span>
+ 857         <span class="i">$HTMLRoot</span> = <span class="i">$Options</span>{<span class="w">root</span>}<span class="sc">;</span>
+ 858       <span class="s">}</span>
+ 859     <span class="s">}</span>
+ 860     <span class="i">$HTMLTitle</span> = <span class="i">$HTMLRoot</span><span class="sc">;</span>
+ 861     <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">title</span>} &amp;&amp; <span class="s">(</span><span class="i">@TextFilesList</span> == <span class="n">1</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span>
+ 862       <span class="i">$HTMLTitle</span> = <span class="i">$Options</span>{<span class="w">title</span>}<span class="sc">;</span>
+ 863     <span class="s">}</span>
+ 864     <span class="i">$HTMLFile</span> = <span class="k">lc</span><span class="s">(</span><span class="i">$HTMLRoot</span><span class="s">)</span> . <span class="q">&quot;-html&quot;</span><span class="sc">;</span>
+ 865     <span class="k">if</span> <span class="s">(</span>!<span class="i">$Options</span>{<span class="w">overwrite</span>}<span class="s">)</span> <span class="s">{</span>
+ 866       <span class="k">if</span> <span class="s">(</span><span class="k">-d</span> <span class="i">$HTMLFile</span><span class="s">)</span> <span class="s">{</span>
+ 867         <span class="k">warn</span> <span class="q">&quot;Warning: Ignoring file $TextFile: The directory $HTMLFile already exists\n&quot;</span><span class="sc">;</span>
+ 868         <span class="k">next</span> <span class="j">FILELIST</span><span class="sc">;</span>
+ 869       <span class="s">}</span>
+ 870     <span class="s">}</span>
+ 871 
+ 872     <span class="i">$TextFilesInfo</span>{<span class="w">FileOkay</span>}[<span class="i">$Index</span>] = <span class="n">1</span><span class="sc">;</span>
+ 873     <span class="i">$TextFilesInfo</span>{<span class="w">InDelim</span>}[<span class="i">$Index</span>] = <span class="i">$InDelim</span><span class="sc">;</span>
+ 874     <span class="i">$TextFilesInfo</span>{<span class="w">HTMLRoot</span>}[<span class="i">$Index</span>] = <span class="q">&quot;$HTMLRoot&quot;</span><span class="sc">;</span>
+ 875     <span class="i">$TextFilesInfo</span>{<span class="w">HTMLTitle</span>}[<span class="i">$Index</span>] = <span class="q">&quot;$HTMLTitle&quot;</span><span class="sc">;</span>
+ 876 
+ 877     <span class="i">$TextFilesInfo</span>{<span class="w">ColCount</span>}[<span class="i">$Index</span>] = <span class="i">@ColLabels</span><span class="sc">;</span>
+ 878     <span class="k">push</span> <span class="i">@</span>{<span class="i">$TextFilesInfo</span>{<span class="w">ColLabels</span>}[<span class="i">$Index</span>]}<span class="cm">,</span> <span class="i">@ColLabels</span><span class="sc">;</span>
+ 879     <span class="k">for</span> <span class="i">$ColNum</span> <span class="s">(</span><span class="n">0</span> .. <span class="i">$#ColLabels</span><span class="s">)</span> <span class="s">{</span>
+ 880       <span class="i">$ColLabel</span> = <span class="i">$ColLabels</span>[<span class="i">$ColNum</span>]<span class="sc">;</span>
+ 881       <span class="i">$TextFilesInfo</span>{<span class="w">ColLabelToNumMap</span>}[<span class="i">$Index</span>]{<span class="i">$ColLabel</span>} = <span class="i">$ColNum</span><span class="sc">;</span>
+ 882     <span class="s">}</span>
+ 883     <span class="i">$TextFilesInfo</span>{<span class="w">LineCount</span>}[<span class="i">$Index</span>] = <span class="i">$LineCount</span><span class="sc">;</span>
+ 884 
+ 885     <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">numrows</span>} == <span class="n">0</span> || <span class="i">$LineCount</span> &lt;= <span class="i">$Options</span>{<span class="w">numrows</span>}<span class="s">)</span> <span class="s">{</span>
+ 886       <span class="i">$TextFilesInfo</span>{<span class="w">MultipleHTMLTables</span>}[<span class="i">$Index</span>] = <span class="n">0</span><span class="sc">;</span>
+ 887     <span class="s">}</span>
+ 888     <span class="k">else</span> <span class="s">{</span>
+ 889       <span class="i">$TextFilesInfo</span>{<span class="w">MultipleHTMLTables</span>}[<span class="i">$Index</span>] = <span class="n">1</span><span class="sc">;</span>
+ 890     <span class="s">}</span>
+ 891     <span class="c"># Setup HTML data directories paths...</span>
+ 892     <span class="i">$TopHTMLDir</span> = <span class="k">lc</span><span class="s">(</span><span class="i">$TextFilesInfo</span>{<span class="w">HTMLRoot</span>}[<span class="i">$Index</span>]<span class="s">)</span> . <span class="q">&quot;-html&quot;</span><span class="sc">;</span>
+ 893     <span class="i">$TextFilesInfo</span>{<span class="w">TopHTMLDir</span>}[<span class="i">$Index</span>] = <span class="q">&quot;$TopHTMLDir&quot;</span><span class="sc">;</span>
+ 894     <span class="i">$TextFilesInfo</span>{<span class="w">SubHTMLDir</span>}[<span class="i">$Index</span>] = <span class="q">&quot;$TopHTMLDir\/html&quot;</span><span class="sc">;</span>
+ 895   <span class="s">}</span>
+ 896 <span class="s">}</span>
+ 897 
+ 898 <span class="c"># Setup various data directories to hold HTML and other related files...</span>
+<a name="SetupDataDirs-"></a> 899 <span class="k">sub </span><span class="m">SetupDataDirs</span> <span class="s">{</span>
+ 900   <span class="k">my</span><span class="s">(</span><span class="i">$Index</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
+ 901   <span class="k">my</span><span class="s">(</span><span class="i">$TopHTMLDir</span><span class="cm">,</span> <span class="i">$SubHTMLDir</span><span class="cm">,</span> <span class="i">$CreateTopHTMLDir</span><span class="cm">,</span> <span class="i">$CreateSubHTMLDir</span><span class="s">)</span><span class="sc">;</span>
+ 902 
+ 903   <span class="i">$TopHTMLDir</span> = <span class="i">$TextFilesInfo</span>{<span class="w">TopHTMLDir</span>}[<span class="i">$Index</span>]<span class="sc">;</span>
+ 904   <span class="i">$SubHTMLDir</span> = <span class="i">$TextFilesInfo</span>{<span class="w">SubHTMLDir</span>}[<span class="i">$Index</span>]<span class="sc">;</span>
+ 905 
+ 906   <span class="c"># Clean up existing directories...</span>
+ 907   <span class="k">if</span> <span class="s">(</span><span class="k">-d</span> <span class="i">$TopHTMLDir</span><span class="s">)</span> <span class="s">{</span>
+ 908     <span class="k">unlink</span> <span class="q">&quot;&lt;$TopHTMLDir/*.html&gt;&quot;</span><span class="sc">;</span>
+ 909     <span class="k">unlink</span> <span class="q">&quot;&lt;$TopHTMLDir/*.css&gt;&quot;</span><span class="sc">;</span>
+ 910   <span class="s">}</span>
+ 911   <span class="k">if</span> <span class="s">(</span><span class="k">-d</span> <span class="i">$SubHTMLDir</span><span class="s">)</span> <span class="s">{</span>
+ 912     <span class="k">unlink</span> <span class="q">&quot;&lt;$SubHTMLDir/*.html&gt;&quot;</span><span class="sc">;</span>
+ 913   <span class="s">}</span>
+ 914   <span class="c"># What directories need to be created...</span>
+ 915   <span class="i">$CreateTopHTMLDir</span> = <span class="s">(</span><span class="k">-d</span> <span class="i">$TopHTMLDir</span><span class="s">)</span> ? <span class="n">0</span> <span class="co">:</span> <span class="n">1</span><span class="sc">;</span>
+ 916 
+ 917   <span class="i">$CreateSubHTMLDir</span> = <span class="n">0</span><span class="sc">;</span>
+ 918   <span class="k">if</span> <span class="s">(</span><span class="i">$TextFilesInfo</span>{<span class="w">MultipleHTMLTables</span>}[<span class="i">$Index</span>]<span class="s">)</span> <span class="s">{</span>
+ 919     <span class="i">$CreateSubHTMLDir</span> = <span class="s">(</span><span class="k">-d</span> <span class="i">$SubHTMLDir</span><span class="s">)</span> ? <span class="n">0</span> <span class="co">:</span> <span class="n">1</span><span class="sc">;</span>
+ 920   <span class="s">}</span>
+ 921 
+ 922   <span class="c"># Create appropriate directories...</span>
+ 923   <span class="k">if</span> <span class="s">(</span><span class="i">$CreateTopHTMLDir</span><span class="s">)</span> <span class="s">{</span>
+ 924     <span class="k">mkdir</span> <span class="i">$TopHTMLDir</span> <span class="k">or</span> <span class="k">die</span> <span class="q">&quot;Couldn&#39;t mkdir $TopHTMLDir: $! \n&quot;</span><span class="sc">;</span>
+ 925   <span class="s">}</span>
+ 926   <span class="k">if</span> <span class="s">(</span><span class="i">$CreateSubHTMLDir</span><span class="s">)</span> <span class="s">{</span>
+ 927     <span class="k">mkdir</span> <span class="i">$SubHTMLDir</span> <span class="k">or</span> <span class="k">die</span> <span class="q">&quot;Error: Couldn&#39;t mkdir $SubHTMLDir: $! \n&quot;</span><span class="sc">;</span>
+ 928   <span class="s">}</span>
+ 929   <span class="k">else</span> <span class="s">{</span>
+ 930     <span class="k">unlink</span> <span class="q">&lt;$SubHTMLDir/*.html&gt;</span><span class="sc">;</span>
+ 931   <span class="s">}</span>
+ 932   <span class="k">return</span> <span class="s">(</span><span class="i">$TopHTMLDir</span><span class="cm">,</span> <span class="i">$SubHTMLDir</span><span class="s">)</span><span class="sc">;</span>
+ 933 <span class="s">}</span>
+ 934 
+ 935 <span class="c"># Setup script usage  and retrieve command line arguments specified using various options...</span>
+<a name="SetupScriptUsage-"></a> 936 <span class="k">sub </span><span class="m">SetupScriptUsage</span> <span class="s">{</span>
+ 937 
+ 938   <span class="c"># Retrieve all the options...</span>
+ 939   <span class="i">%Options</span> = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 940   <span class="i">$Options</span>{<span class="w">indelim</span>} = <span class="q">&quot;comma&quot;</span><span class="sc">;</span>
+ 941   <span class="i">$Options</span>{<span class="w">numrows</span>} = <span class="n">50</span><span class="sc">;</span>
+ 942 
+ 943   <span class="i">$Options</span>{<span class="w">mode</span>} = <span class="q">&quot;shade&quot;</span><span class="sc">;</span>
+ 944   <span class="i">$Options</span>{<span class="w">highlightby</span>} = <span class="q">&quot;colnum&quot;</span><span class="sc">;</span>
+ 945   <span class="i">$Options</span>{<span class="w">highlightstyle</span>} = <span class="q">&quot;background&quot;</span><span class="sc">;</span>
+ 946 
+ 947   <span class="i">$Options</span>{<span class="w">cellpadding</span>} = <span class="n">2</span><span class="sc">;</span>
+ 948   <span class="i">$Options</span>{<span class="w">cellspacing</span>} = <span class="n">1</span><span class="sc">;</span>
+ 949 
+ 950   <span class="i">$Options</span>{<span class="w">displaylinks</span>} = <span class="q">&quot;both&quot;</span><span class="sc">;</span>
+ 951   <span class="i">$Options</span>{<span class="w">displaylinksinfo</span>} = <span class="q">&quot;both&quot;</span><span class="sc">;</span>
+ 952   <span class="i">$Options</span>{<span class="w">stylesheet</span>} = <span class="q">&quot;new&quot;</span><span class="sc">;</span>
+ 953 
+ 954   <span class="i">$Options</span>{<span class="w">titledisplay</span>} = <span class="q">&quot;yes&quot;</span><span class="sc">;</span>
+ 955 
+ 956   <span class="k">if</span> <span class="s">(</span>!<span class="i">GetOptions</span><span class="s">(</span>\<span class="i">%Options</span><span class="cm">,</span> <span class="q">&quot;align|a=s&quot;</span><span class="cm">,</span> <span class="q">&quot;border|b=i&quot;</span><span class="cm">,</span> <span class="q">&quot;cellpadding=i&quot;</span><span class="cm">,</span> <span class="q">&quot;cellspacing=i&quot;</span><span class="cm">,</span> <span class="q">&quot;color|c=s&quot;</span><span class="cm">,</span> <span class="q">&quot;footer=s&quot;</span><span class="cm">,</span> <span class="q">&quot;displaylinks|d=s&quot;</span><span class="cm">,</span> <span class="q">&quot;displaylinksinfo=s&quot;</span><span class="cm">,</span> <span class="q">&quot;help|h&quot;</span><span class="cm">,</span> <span class="q">&quot;headeralign=s&quot;</span><span class="cm">,</span> <span class="q">&quot;headercolor=s&quot;</span><span class="cm">,</span> <span class="q">&quot;highlight=s&quot;</span><span class="cm">,</span> <span class="q">&quot;highlightby=s&quot;</span><span class="cm">,</span> <span class="q">&quot;highlightcolor=s&quot;</span><span class="cm">,</span> <span class="q">&quot;highlightstyle=s&quot;</span><span class="cm">,</span> <span class="q">&quot;indelim=s&quot;</span><span class="cm">,</span> <span class="q">&quot;mode|m=s&quot;</span><span class="cm">,</span> <span class="q">&quot;numrows|n=i&quot;</span><span class="cm">,</span> <span class="q">&quot;overwrite|o&quot;</span><span class="cm">,</span> <span class="q">&quot;root|r=s&quot;</span><span class="cm">,</span> <span class="q">&quot;shadecolor=s&quot;</span><span class="cm">,</span> <span class="q">&quot;stylesheet=s&quot;</span><span class="cm">,</span> <span class="q">&quot;stylesheetname=s&quot;</span><span class="cm">,</span> <span class="q">&quot;title|t=s&quot;</span><span class="cm">,</span> <span class="q">&quot;titledisplay=s&quot;</span><span class="cm">,</span> <span class="q">&quot;workingdir|w=s&quot;</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span>
+ 957     <span class="k">die</span> <span class="q">&quot;\nTo get a list of valid options and their values, use \&quot;$ScriptName -h\&quot; or\n\&quot;perl -S $ScriptName -h\&quot; command and try again...\n&quot;</span><span class="sc">;</span>
+ 958   <span class="s">}</span>
+ 959 
+ 960   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">workingdir</span>}<span class="s">)</span> <span class="s">{</span>
+ 961     <span class="k">if</span> <span class="s">(</span>! <span class="k">-d</span> <span class="i">$Options</span>{<span class="w">workingdir</span>}<span class="s">)</span> <span class="s">{</span>
+ 962       <span class="k">die</span> <span class="q">&quot;Error: The value specified, $Options{workingdir}, for option \&quot;-w --workingdir\&quot; is not a directory name.\n&quot;</span><span class="sc">;</span>
+ 963     <span class="s">}</span>
+ 964     <span class="k">chdir</span> <span class="i">$Options</span>{<span class="w">workingdir</span>} <span class="k">or</span> <span class="k">die</span> <span class="q">&quot;Error: Couldn&#39;t chdir $Options{workingdir}: $! \n&quot;</span><span class="sc">;</span>
+ 965   <span class="s">}</span>
+ 966   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">displaylinks</span>} !~ <span class="q">/^(top|bottom|both)$/i</span><span class="s">)</span> <span class="s">{</span>
+ 967     <span class="k">die</span> <span class="q">&quot;Error: The value specified, $Options{displaylinks}, for option \&quot;-d --displaylinks\&quot; is not valid. Allowed values: top, bottom, or both\n&quot;</span><span class="sc">;</span>
+ 968   <span class="s">}</span>
+ 969   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">displaylinksinfo</span>} !~ <span class="q">/^(line|table|both)$/i</span><span class="s">)</span> <span class="s">{</span>
+ 970     <span class="k">die</span> <span class="q">&quot;Error: The value specified, $Options{displaylinksinfo}, for option \&quot;--displaylinksinfo\&quot; is not valid. Allowed values: line, table, or both\n&quot;</span><span class="sc">;</span>
+ 971   <span class="s">}</span>
+ 972   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">indelim</span>} !~ <span class="q">/^(comma|semicolon)$/i</span><span class="s">)</span> <span class="s">{</span>
+ 973     <span class="k">die</span> <span class="q">&quot;Error: The value specified, $Options{indelim}, for option \&quot;--indelim\&quot; is not valid. Allowed values: comma or semicolon\n&quot;</span><span class="sc">;</span>
+ 974   <span class="s">}</span>
+ 975   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">highlightby</span>} !~ <span class="q">/^(colnum|collabel)$/i</span><span class="s">)</span> <span class="s">{</span>
+ 976     <span class="k">die</span> <span class="q">&quot;Error: The value specified, $Options{highlightby}, for option \&quot;--highlightby\&quot; is not valid. Allowed values: colnum or collabel\n&quot;</span><span class="sc">;</span>
+ 977   <span class="s">}</span>
+ 978   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">highlightstyle</span>} !~ <span class="q">/^(background|text)$/i</span><span class="s">)</span> <span class="s">{</span>
+ 979     <span class="k">die</span> <span class="q">&quot;Error: The value specified, $Options{highlightstyle}, for option \&quot;--highlightstyle\&quot; is not valid. Allowed values: background or text\n&quot;</span><span class="sc">;</span>
+ 980   <span class="s">}</span>
+ 981   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">mode</span>} !~ <span class="q">/^(plain|shade|highlight|shadedhighlight)$/i</span><span class="s">)</span> <span class="s">{</span>
+ 982     <span class="k">die</span> <span class="q">&quot;Error: The value specified, $Options{mode}, for option \&quot;-m --mode\&quot; is not valid. Allowed values: plain, shade, hightlight, or shadedhighlight\n&quot;</span><span class="sc">;</span>
+ 983   <span class="s">}</span>
+ 984   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">stylesheet</span>} !~ <span class="q">/^(old|new|none)$/i</span><span class="s">)</span> <span class="s">{</span>
+ 985     <span class="k">die</span> <span class="q">&quot;Error: The value specified, $Options{stylesheet}, for option \&quot;-s --stylesheet\&quot; is not valid. Allowed values: old, new, or none\n&quot;</span><span class="sc">;</span>
+ 986   <span class="s">}</span>
+ 987   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">numrows</span>} &lt; <span class="n">0</span><span class="s">)</span> <span class="s">{</span>
+ 988     <span class="k">die</span> <span class="q">&quot;Error: The value specified, $Options{numrows},  for option \&quot;-n --numrows\&quot; is not valid. Allowed values: &gt;= 0 \n&quot;</span><span class="sc">;</span>
+ 989   <span class="s">}</span>
+ 990   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">titledisplay</span>} !~ <span class="q">/^(yes|no)$/i</span><span class="s">)</span> <span class="s">{</span>
+ 991     <span class="k">die</span> <span class="q">&quot;Error: The value specified, $Options{titledisplay}, for option \&quot;--titledisplay\&quot; is not valid. Allowed values: yes or no\n&quot;</span><span class="sc">;</span>
+ 992   <span class="s">}</span>
+ 993   <span class="k">if</span> <span class="s">(</span><span class="k">exists</span><span class="s">(</span><span class="i">$Options</span>{<span class="w">border</span>}<span class="s">)</span><span class="s">)</span> <span class="s">{</span>
+ 994     <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">border</span>} &lt; <span class="n">0</span><span class="s">)</span> <span class="s">{</span>
+ 995       <span class="k">die</span> <span class="q">&quot;Error: The value specified, $Options{border},  for option \&quot;--border\&quot; is not valid. Allowed values: &gt;= 0 \n&quot;</span><span class="sc">;</span>
+ 996     <span class="s">}</span>
+ 997   <span class="s">}</span>
+ 998   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">cellpadding</span>} &lt; <span class="n">0</span><span class="s">)</span> <span class="s">{</span>
+ 999     <span class="k">die</span> <span class="q">&quot;Error: The value specified, $Options{cellpadding},  for option \&quot;--cellpadding\&quot; is not valid. Allowed values: &gt;= 0 \n&quot;</span><span class="sc">;</span>
+1000   <span class="s">}</span>
+1001   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">cellspacing</span>} &lt; <span class="n">0</span><span class="s">)</span> <span class="s">{</span>
+1002     <span class="k">die</span> <span class="q">&quot;Error: The value specified, $Options{cellspacing},  for option \&quot;--cellspacing\&quot; is not valid. Allowed values: &gt;= 0 \n&quot;</span><span class="sc">;</span>
+1003   <span class="s">}</span>
+1004 <span class="s">}</span>
+1005 
+<a name="EOF-"></a></pre>
+<p>&nbsp;</p>
+<br />
+<center>
+<img src="../../../images/h2o2.png">
+</center>
+</body>
+</html>