]> lifelog.hopto.org Git - LifeLog.git/commitdiff
Implemented plugins.
authorWill Budic <redacted>
Fri, 26 May 2023 12:44:22 +0000 (22:44 +1000)
committerWill Budic <redacted>
Fri, 26 May 2023 12:44:22 +0000 (22:44 +1000)
20 files changed:
.gitignore
htdocs/cgi-bin/docs/About.md
htdocs/cgi-bin/docs/LogTagsHelp.md
htdocs/cgi-bin/docs/PerlCNF/README.md
htdocs/cgi-bin/docs/Squeezed In Between Poetry/pix/arrDbl_left.gif [new file with mode: 0644]
htdocs/cgi-bin/docs/Squeezed In Between Poetry/pix/arrDbl_right.gif [new file with mode: 0644]
htdocs/cgi-bin/docs/Squeezed In Between Poetry/pix/arrDbl_top.gif [new file with mode: 0644]
htdocs/cgi-bin/docs/Squeezed In Between Poetry/pix/thournwhaul_logo.jpg [new file with mode: 0644]
htdocs/cgi-bin/docs/Squeezed In Between Poetry/vol1.html [new file with mode: 0644]
htdocs/cgi-bin/docs/Squeezed In Between Poetry/vol2.html [new file with mode: 0644]
htdocs/cgi-bin/images/VS-on-METABOX-42.png [new file with mode: 0644]
htdocs/cgi-bin/index.cgi
htdocs/cgi-bin/index.cnf
htdocs/cgi-bin/main.cgi
htdocs/cgi-bin/system/modules/CNFNode.pm
htdocs/cgi-bin/system/modules/CNFParser.pm
htdocs/cgi-bin/system/modules/HTMLIndexProcessorPlugin.pm [new file with mode: 0644]
htdocs/cgi-bin/system/modules/MarkdownPlugin.pm
htdocs/cgi-bin/wsrc/main.css
htdocs/cgi-bin/wsrc/main.js

index a6639529856fdb67406c19c20636c2f212afbf40..fab73206858174db512b872c375a1ed8c76e2767 100644 (file)
@@ -23,3 +23,4 @@ tags
 */bck/*
 bck_*
 dbLifeLog/current_theme
+lighttpd.conf
index b58945bf99c28a0f1f9ac95dd550e87c42685ad8..2c2428c638cc66762b3b2c0e87848aff7386e1f7 100644 (file)
@@ -4,4 +4,7 @@
 * It is meant to be limitless, fully searchable and viewed as mostly desired. 
 * Can be used and expanded, as it is also fully configurable.
 
-![](images/VS-on-METABOX-42.png)
+![Example Page](images/VS-on-METABOX-42.png)
+
+
+
index e1ee4d7eb5fb25d3f61664fe215997de1cc6d0ee..4e53c0fe166ac7a585be4e1932c8fc8a392cf3c5 100644 (file)
@@ -1,6 +1,6 @@
 # LifeLog Post Tags
 
-```html
+```
 <<B<{Text To Bold}>>
 <<I<{Text To Italic}>>
 <<TITLE<{Title Text}>>
@@ -13,7 +13,7 @@
 * _frm.png Image is resized to -> width="210" height="120"
 
 Examples:
-```html
+```
 
   ../cgi-bin/images/
                        my_cat_simon_frm.png
index b987e2e2053466d2be513e8280e45adf11a0aaf9..caaf511d8927ed161c818e3fb8edc1e42c553466 100644 (file)
@@ -1,14 +1,15 @@
+
 # PerlCNF
 
 Perl based Configuration Network File Format Parser and Specifications.
 CNF file format supports used format extraction from any text file.
 Useful for templates and providing initial properties and values for an application settings.
-Has own textual data format. Therefore can also be useful for database data batch processing.
+Has own textual data format. Therefore, can also be useful for database data batch processing.
 
-This version doesn't parse the actual __DATA__ section of an perl file yet. Contact me if this is needed, and for any other possible, useful requests.
+This version doesn't parse the actual __DATA__ section of a perl file yet. Contact me if this is needed, and for any other possible, useful requests.
 It is at current v.2.6, and specification implemented.
 
-### [You can find the specification here](./Specifications_For_CNF_ReadMe.md).
+[You can find the specification here.](https://github.com/wbudic/PerlCNF/blob/master/Specifications_For_CNF_ReadMe.md)
 
 ---
 
@@ -50,7 +51,8 @@ require CNFParser;
  #Load config with enabled evaluation on the fly, of perl code embedded in config file.
  my $cnf2 = new CNFParser('sample.cnf',{DO_enabled=>1, duplicates_overwrite=0});
 
- ```
+```
+
 ## Sample CNF File
 
 ```CNF
@@ -68,10 +70,11 @@ Australia, USA, "Great Britain", 'Ireland', "Germany", Austria
 Spain,     Serbia
 Russia
 Thailand, Greece
->>>
+>>
+
+Note this text here, is like a comment, not affecting and simply ignored.
 
-Note this text here, is like an comment, not affecting and simply ignored.
-<p>Other tags like this paragraph better put into a CNF property to be captured.</p>
+<p>Other tags like this paragraph, is better to put into a CNF property to be captured.</p>
 
 ```
 
@@ -91,10 +94,10 @@ print "App Name: ".$cnf->constant('$APP_NAME')."]";
 * Tests are located in the projects **./test directory.
 * Example how to run them:
 
-    ```sh
-        perl ./tests/testAll.pl
-    ```
+```sh
+    perl ./tests/testAll.pl
+```
 
-* Check also the latest Perl CNF [example.cnf](./tests/example.cnf) scripted also as an tutorial.
+* Check also the latest Perl CNF [example.cnf](https://github.com/wbudic/PerlCNF/blob/master/tests/example.cnf) scripted also as a tutorial.
   * Yes! That is an actual valid configuration file.
   * To only just run it or check use ``` perl ./tests/testExample.pl  ```
diff --git a/htdocs/cgi-bin/docs/Squeezed In Between Poetry/pix/arrDbl_left.gif b/htdocs/cgi-bin/docs/Squeezed In Between Poetry/pix/arrDbl_left.gif
new file mode 100644 (file)
index 0000000..84ce312
Binary files /dev/null and b/htdocs/cgi-bin/docs/Squeezed In Between Poetry/pix/arrDbl_left.gif differ
diff --git a/htdocs/cgi-bin/docs/Squeezed In Between Poetry/pix/arrDbl_right.gif b/htdocs/cgi-bin/docs/Squeezed In Between Poetry/pix/arrDbl_right.gif
new file mode 100644 (file)
index 0000000..28671f5
Binary files /dev/null and b/htdocs/cgi-bin/docs/Squeezed In Between Poetry/pix/arrDbl_right.gif differ
diff --git a/htdocs/cgi-bin/docs/Squeezed In Between Poetry/pix/arrDbl_top.gif b/htdocs/cgi-bin/docs/Squeezed In Between Poetry/pix/arrDbl_top.gif
new file mode 100644 (file)
index 0000000..78780a9
Binary files /dev/null and b/htdocs/cgi-bin/docs/Squeezed In Between Poetry/pix/arrDbl_top.gif differ
diff --git a/htdocs/cgi-bin/docs/Squeezed In Between Poetry/pix/thournwhaul_logo.jpg b/htdocs/cgi-bin/docs/Squeezed In Between Poetry/pix/thournwhaul_logo.jpg
new file mode 100644 (file)
index 0000000..14338bc
Binary files /dev/null and b/htdocs/cgi-bin/docs/Squeezed In Between Poetry/pix/thournwhaul_logo.jpg differ
diff --git a/htdocs/cgi-bin/docs/Squeezed In Between Poetry/vol1.html b/htdocs/cgi-bin/docs/Squeezed In Between Poetry/vol1.html
new file mode 100644 (file)
index 0000000..64fc416
--- /dev/null
@@ -0,0 +1,1541 @@
+
+<!-- saved from url=(0070)./vol1.html#twhaul.27082002 -->
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1252"><title>Squeezed In Between Poetry - Vol I</title>
+<style type="text/css">
+<!--
+body{
+  background-color:#C57A75;
+  font-family: Tahoma, Helvetica, sans-serif;
+}
+p{  font-size: 12pt; }
+p.h1{  font-size: 20pt; font-weight: bold;}
+p.h2{  font-size: 14pt; font-weight: bold;}
+p.h3{  font-size: 12pt; font-weight: bold;}
+p.txt {  font-size: 10pt; font-weight: bold;}
+p.stxt{  font-size: 8pt; font-weight: bold; }
+p.wh {  font-size: 10pt; font-weight: bold; color: #ffffff}
+p.gr {  font-size: 10pt; font-weight: bold; color: #666666}
+p.gr8 {  font-size: 7pt; font-weight: bold; color: #666666}
+p.plink {  font-size: 10pt; font-weight: bold; color: #C57A75}
+p.pre{font-family:  Tahoma, Garamond, Helvetica; font-size: 13pt; font-weight: bold;}
+.poem{font-family:  Tahoma, Garamond, Helvetica; font-size: 13pt; background-color: #EDEFBB; padding: 10px}
+
+a  {
+       color : #666666;
+       text-decoration : none;
+}
+
+a:Visited  {
+       color : #666666;
+       font-style : normal;
+}
+
+a:Active  {
+       color : #666666;
+}
+
+a:Hover  {
+       color : #C57A75;
+       text-decoration : underline;
+       background-color : #EDEFBB;
+       font-style : bold;
+}
+-->
+</style>
+<script>
+function getBaseUrl() {
+    return window.location.href.match(/^.*\//);
+}
+</script>
+</head>
+<body leftmargin="0" topmargin="10" marginwidth="0" marginheight="0" onload="console.log(getBaseUrl())">
+
+
+<a name="head"></a>
+
+<table width="640" border="0" cellspacing="2" cellpadding="10" align="center" bgcolor="#000000">
+<tbody><tr> 
+<td bgcolor="#EDEFBB">
+<p class="h1" align="center">
+<img src="pix/thournwhaul_logo.jpg" border="0" alt="" align="middle">&nbsp;&nbsp;&nbsp;Squeezed In Between Poetry
+</p>
+
+
+<table align="center" cellpadding="10"><tbody><tr>
+<td><p class="h2">Volume I</p></td>
+<td><p class="h2" align="center"><a href="vol2.html">Volume II</a></p></td>
+</tr>
+</tbody></table>
+
+</td>
+</tr>
+<tr> 
+<td bgcolor="#EDEFBB" width="80%">
+<p class="gr">
+This is a private and sacred unpublished poetry collection. Born out of need and desperation by the author, to return any left sense of art, that has slowly begun to disappear from the Internet scene. The turn of the new century brought only continuums of wars (middle east). The west is experiencing floods, bad economy, retrenchments. Morale values in people are getting even more so degrading. Time has come to heal, save planet earth and follow in spirit (at least) non-monetary values.
+</p>
+<p class="gr">
+This collection is a study and a poetry practice, future published works will not be part of this collection. The strive of all this was to produce a generation less verse, play of words, trying to suit everyone. In hope it will entertain if not heal in this uncertain times of information overflow. Nothing here found is particularly political, gender or religion sided. The only protagonist is; and will continue to be, the right to freedom of speech, art and mutual respect of thought.
+<br>
+
+</p>            
+</td>
+</tr>
+</tbody></table>
+<br>
+
+<!-- Pages Start -->
+<table width="640" border="0" cellspacing="2" cellpadding="10" align="center" bgcolor="#000000">
+<!-- Pages Start -->
+
+
+
+<!-- For the Love of Syringa Start -->
+  <tbody><tr valign="top"> 
+    <td bgcolor="#EDEFBB" rowspan="2"> 
+<pre class='poem'>SQUEEZED
+IN BETWEEN
+POETRY
+</pre>
+<!-- Index-->
+<hr size="2" color="#C57A75">
+<table>
+<tbody><tr>
+<td valign="top" colspan="2" align="center"><p class="gr8">10-Dec-2002<br><i>For the Love of Syringa</i></p></td>
+</tr>
+<tr>
+<td valign="top" colspan="2"><p class="gr"></p><hr size="2" color="#C57A75"></td>
+</tr>
+<tr>
+</tr><tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.12112002"><p class="gr8">Facing The River Dream</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.05112002"><p class="gr8">Just Another Testament</p></a></td>
+</tr>
+<tr><td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.19082002_2"><p class="gr8">Dog Patrol</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.19082002_1"><p class="gr8">Abstained Melodrama</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.08092002"><p class="gr8">Cross Eyed</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.06092002"><p class="gr8">The Flock Trip</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.03092002"><p class="gr8">Coined System</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.30082002"><p class="gr8">Sun Stark</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.27082002"><p class="gr8">The Shaved Nun Tail Rap</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.24082002"><p class="gr8">Disturbed Kitten</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.22082002"><p class="gr8">Creation</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.20082002"><p class="gr8">Troll</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.10052002"><p class="gr8">Remind Me What I am Not</p></a></td>
+</tr>
+<tr>
+<td valign="top" colspan="2">
+<hr size="2" color="#C57A75">
+<p class="plink"><img src="pix/arrDbl_left.gif" border="0" alt="" align="middle">
+<a href="javascript:history.back()">back</a>
+<img src="pix/arrDbl_top.gif" border="0" alt="" align="middle">
+<a href="./vol1.html#head">top</a>
+</p>     
+<p class="gr8" align="center">Poetry of<br> Thourn Whaul<br>  </p> 
+</td>
+</tr> 
+</tbody></table>
+<!-- Index End-->
+       </td>
+    <td bgcolor="#FAFBD6" valign="center"><a name="twhaul.10122002"></a><p class="pre">For the Love of Syringa</p></td>
+  </tr>
+  <tr valign="top"> 
+    <td bgcolor="#FAFBD6" valign="top"> 
+<pre class='poem'>
+My village is burning feelings convulse
+home away on a trench bench rest
+Feelings don't take me away, avulse
+what was left behind in jest
+
+Is it my grandfathers house? but family aside
+the Syringa  bloom  has taken over mourn
+Occupied presence grasping left out pride
+seduced hope by facts of youth adjourn.
+You violate flower let your self go 
+from the roads that you follow so carefully stringed
+Through orchards full in fruit keep your self low
+Bring me the perfume of hair loosened, been tinged
+Childhood mists of woodlands chased, 
+and moments well discrete you witnessed, fringed
+Syringa release the visions of home
+bride moments and the children's play.
+Obscured  plight then in a phase of epitome
+only you can again seduce as such, but be belay.
+
+My land under plunder, arson, rape 
+scratching years, breathing smoke
+Digging hollows, when ditches undrape 
+Syringa roots a loyal subject to invoke
+as wishes march with this boots that follow
+many good men and their own turn of reasons
+A lilac now missed grew from a barrow
+rich, powerful, to sustain the seasons.
+
+
+</pre>
+        <p></p>
+</td></tr>
+<!-- For the Love of Syringa End -->
+
+
+
+
+<!-- Just Another Testament Start -->
+
+ <tr valign="top"> 
+    <td bgcolor="#EDEFBB"><p class="txt">Intro</p></td>
+    <td bgcolor="#FAFBD6" valign="top"> 
+       <p class="gr">
+       "Facing The River Dream" is one of my favourites. It is a "hook-on" poem to a famous Led Zeppelin song. It tries to be a riddle with how it approaches abstraction. Maybe its my odd personal taste, but it is a shame that this type of poems are not considered anymore to be of "style".  Hint - It is a riddle since it has nothing to do directly on what it preaches or is being hook-up on, but helps ;)
+       </p>
+       </td>
+  </tr>
+
+
+  <tr valign="top"> 
+    <td bgcolor="#EDEFBB" rowspan="2"> 
+<pre class='poem'>SQUEEZED
+IN BETWEEN
+POETRY
+</pre>
+<!-- Index-->
+<hr size="2" color="#C57A75">
+<table>
+<tbody><tr>
+<td valign="top" colspan="2" align="center"><p class="gr8">12-Nov-2002<br><i>Facing The River Dream</i></p></td>
+</tr>
+<tr>
+<td valign="top" colspan="2"><p class="gr"></p><hr size="2" color="#C57A75"></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.05112002"><p class="gr8">Just Another Testament</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.19082002_2"><p class="gr8">Dog Patrol</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.19082002_1"><p class="gr8">Abstained Melodrama</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.08092002"><p class="gr8">Cross Eyed</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.06092002"><p class="gr8">The Flock Trip</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.03092002"><p class="gr8">Coined System</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.30082002"><p class="gr8">Sun Stark</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.27082002"><p class="gr8">The Shaved Nun Tail Rap</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.24082002"><p class="gr8">Disturbed Kitten</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.22082002"><p class="gr8">Creation</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.20082002"><p class="gr8">Troll</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.10052002"><p class="gr8">Remind Me What I am Not</p></a></td>
+</tr>
+<tr>
+<td valign="top" colspan="2">
+<hr size="2" color="#C57A75">
+<p class="plink"><img src="pix/arrDbl_left.gif" border="0" alt="" align="middle">
+<a href="javascript:history.back()">back</a>
+<img src="pix/arrDbl_top.gif" border="0" alt="" align="middle">
+<a href="./vol1.html#head">top</a>
+</p>     
+<p class="gr8" align="center">Poetry of<br> Thourn Whaul<br>  </p> 
+</td>
+</tr> 
+</tbody></table>
+<!-- Index End-->
+       </td>
+    <td bgcolor="#FAFBD6" valign="center"><a name="twhaul.12112002"></a><p class="pre">Facing The River Dream</p></td>
+  </tr>
+  <tr valign="top"> 
+    <td bgcolor="#FAFBD6" valign="top"> 
+<pre class='poem'>Harsh peace a vision yet to face
+when confronted with distances revealed
+Wasted beauty this foreign place
+unfazed by mortals time over left to bleed.
+
+Tasting the river green was bitter
+it carried the foot pilgrims smell
+Embracing them as their desert sitter
+of opiates less visions daring to foretell.
+
+Disturbed was thought by the sight of a body
+floating, after taken from the stake
+Healing stretched turning ghoulie
+to return to life just before the lake.
+
+Time to go, dream is over 
+moment enough to let loose only a tear
+The becoming is bedding in clouds passover
+decision made, moving to Kashmir.
+</pre>
+        <p></p>
+</td></tr>
+<!-- Facing The River Dream End -->
+
+
+
+
+
+
+
+<!-- Just Another Testament Start -->
+  <tr valign="top"> 
+    <td bgcolor="#EDEFBB" rowspan="2"> 
+<pre class='poem'>SQUEEZED
+IN BETWEEN
+POETRY
+</pre>
+<!-- Index-->
+<hr size="2" color="#C57A75">
+<table>
+<tbody><tr>
+<td valign="top" colspan="2" align="center"><p class="gr8">05-Nov-2002<br><i>Just Another Testament</i></p></td>
+</tr>
+<tr>
+<td valign="top" colspan="2"><p class="gr"></p><hr size="2" color="#C57A75"></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.19082002_2"><p class="gr8">Dog Patrol</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.19082002_1"><p class="gr8">Abstained Melodrama</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.08092002"><p class="gr8">Cross Eyed</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.06092002"><p class="gr8">The Flock Trip</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.03092002"><p class="gr8">Coined System</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.30082002"><p class="gr8">Sun Stark</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.27082002"><p class="gr8">The Shaved Nun Tail Rap</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.24082002"><p class="gr8">Disturbed Kitten</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.22082002"><p class="gr8">Creation</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.20082002"><p class="gr8">Troll</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.10052002"><p class="gr8">Remind Me What I am Not</p></a></td>
+</tr>
+<tr>
+<td valign="top" colspan="2">
+<hr size="2" color="#C57A75">
+<p class="plink"><img src="pix/arrDbl_left.gif" border="0" alt="" align="middle">
+<a href="javascript:history.back()">back</a>
+<img src="pix/arrDbl_top.gif" border="0" alt="" align="middle">
+<a href="./vol1.html#head">top</a>
+</p>     
+<p class="gr8" align="center">Poetry of<br> Thourn Whaul<br>  </p> 
+</td>
+</tr> 
+</tbody></table>
+<!-- Index End-->
+       </td>
+    <td bgcolor="#FAFBD6" valign="center"><a name="twhaul.05112002"></a><p class="pre">Just Another Testament</p></td>
+  </tr>
+  <tr valign="top"> 
+    <td bgcolor="#FAFBD6" valign="top"> 
+<pre class='poem'>
+What have you done
+with the scent that walked by
+What have you stun
+with looks that freed my
+You just be there
+while we carry the burden mount
+You just be fare
+to the disease taking count.
+
+Whish this words could come any easy
+whish you new things you instinctively do
+So let me wonder into my thing
+that maligned decision came to sing.
+
+I do my job well as we fight what needs to expel
+In hope a revelation without fear
+that when gone from verses I'll reappear. 
+Then talk to me as a stranger
+Introduce your self as you whish.
+Find me coming along, find me happy in full song.
+Courage a revelation without fear
+when I am gone to you I'll become less dear.
+For no use to be in mourning
+For no time was spend or ever lost
+Your served and wise went days
+with this lover and his ways.
+
+</pre>
+        <p></p>
+</td></tr>
+<!-- Just Another Testament End -->
+
+
+
+
+
+<!-- Dog Patrol Start -->
+  <tr valign="top"> 
+    <td bgcolor="#EDEFBB" rowspan="2"> 
+<pre class='poem'>SQUEEZED
+IN BETWEEN
+POETRY
+</pre>
+<!-- Index-->
+<hr size="2" color="#C57A75">
+<table>
+<tbody><tr>
+<td valign="top" colspan="2" align="center"><p class="gr">19/08/2002<br><i>Dog Patrol</i></p></td>
+</tr>
+<tr>
+<td valign="top" colspan="2"><p class="gr"></p><hr size="2" color="#C57A75"></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.19082002_1"><p class="gr8">Abstained Melodrama</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.08092002"><p class="gr8">Cross Eyed</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.06092002"><p class="gr8">The Flock Trip</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.03092002"><p class="gr8">Coined System</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.30082002"><p class="gr8">Sun Stark</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.27082002"><p class="gr8">The Shaved Nun Tail Rap</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.24082002"><p class="gr8">Disturbed Kitten</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.22082002"><p class="gr8">Creation</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.20082002"><p class="gr8">Troll</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.10052002"><p class="gr8">Remind Me What I am Not</p></a></td>
+</tr>
+<tr>
+<td valign="top" colspan="2">
+<hr size="2" color="#C57A75">
+<p class="plink"><img src="pix/arrDbl_left.gif" border="0" alt="" align="middle">
+<a href="javascript:history.back()">back</a>
+<img src="pix/arrDbl_top.gif" border="0" alt="" align="middle">
+<a href="./vol1.html#head">top</a>
+</p>     
+<p class="gr8" align="center">Poetry of<br> Thourn Whaul<br>  </p> 
+</td>
+</tr> 
+</tbody></table>
+<!-- Index End-->                 
+       </td>
+    <td bgcolor="#FAFBD6" valign="center"><a name="twhaul.19082002_2"></a><p class="pre">Dog Patrol</p></td>
+  </tr>
+  <tr valign="top"> 
+    <td bgcolor="#FAFBD6" valign="top"> 
+<pre class='poem'>
+Pulled into place the angry hound
+by hands well groomed for the job.
+Enemy astound, surprised 
+another direction to go lob.
+
+Sleep in peace you mankind layer
+don't dog your best friend.
+Heard let it be in thy prayer
+then join healed by a noseband.
+
+A lonely setting is the dog patrol
+every day bringing much of the same.
+Drugged in the smell of carbinol
+reason enough not to feel any blame. 
+
+In the hardest hour, why do we search 
+for reasons of devour?
+Fruit taken, any, even sour.
+Forgotten next and the dearest,
+like that passing by flower.
+</pre>
+        <p></p>
+</td></tr>
+<!-- Dog Patrol End -->
+
+<!-- Abstained Melodrama -->
+
+  <tr valign="top"> 
+    <td bgcolor="#EDEFBB"><p class="txt">Intro</p></td>
+    <td bgcolor="#FAFBD6" valign="top"> 
+       <p class="gr">Theme food. One of those <a href="http://www.aapcsite.plus.com/research.html" target="_blank">[AAPC]</a> challenges (usenet).</p>
+       </td>
+  </tr>
+
+  <tr valign="top"> 
+<td bgcolor="#EDEFBB" rowspan="2"> 
+<pre class='poem'>SQUEEZED
+IN BETWEEN
+POETRY
+</pre>
+<!-- Index-->
+<hr size="2" color="#C57A75">
+<table>
+<tbody><tr>
+<td valign="top" colspan="2" align="center"><p class="gr8">19/08/2002<br><i>Abstained Melodrama</i></p></td>
+</tr>
+<tr>
+<td valign="top" colspan="2"><p class="gr"></p><hr size="2" color="#C57A75"></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.08092002"><p class="gr8">Cross Eyed</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.06092002"><p class="gr8">The Flock Trip</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.03092002"><p class="gr8">Coined System</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.30082002"><p class="gr8">Sun Stark</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.27082002"><p class="gr8">The Shaved Nun Tail Rap</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.24082002"><p class="gr8">Disturbed Kitten</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.22082002"><p class="gr8">Creation</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.20082002"><p class="gr8">Troll</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.10052002"><p class="gr8">Remind Me What I am Not</p></a></td>
+</tr>
+<tr>
+<td valign="top" colspan="2">
+<hr size="2" color="#C57A75">
+<p class="plink"><img src="pix/arrDbl_left.gif" border="0" alt="" align="middle">
+<a href="javascript:history.back()">back</a>
+<img src="pix/arrDbl_top.gif" border="0" alt="" align="middle">
+<a href="./vol1.html#head">top</a>
+</p>     
+<p class="gr8" align="center">Poetry of<br> Thourn Whaul<br>  </p> 
+</td>
+</tr> 
+</tbody></table>
+<!-- Index End-->
+</td>
+<td bgcolor="#FAFBD6" valign="center"><a name="twhaul.19082002_1"></a><p class="pre">Abstained Melodrama</p></td>
+</tr>
+
+
+<tr valign="top"> 
+<td bgcolor="#FAFBD6" valign="top"> 
+<pre class='poem'>        
+To many weeks passed in abstention
+then finally it is time and a dash to the store.
+First I caressed the melon
+then peeled to suck on the core.
+
+Sticky fingers juices everywhere
+all divulged like an ï¿½clair.
+
+</pre>
+</td>
+</tr>
+<!-- Abstained Melodrama End-->
+
+
+<!-- Cross Eyed -->
+  <tr valign="top"> 
+    <td bgcolor="#EDEFBB" rowspan="2"> 
+<pre class='poem'>SQUEEZED
+IN BETWEEN
+POETRY
+</pre>
+<!-- Index-->
+<hr size="2" color="#C57A75">
+<table>
+<tbody><tr>
+<td valign="top" colspan="2" align="center"><p class="gr8">08/09/2002<br><i>Cross Eyed</i></p></td>
+</tr>
+<tr>
+<td valign="top" colspan="2"><p class="gr"></p><hr size="2" color="#C57A75"></td>
+<td>
+</td></tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.06092002"><p class="gr8">The Flock Trip</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.03092002"><p class="gr8">Coined System</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.30082002"><p class="gr8">Sun Stark</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.27082002"><p class="gr8">The Shaved Nun Tail Rap</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.24082002"><p class="gr8">Disturbed Kitten</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.22082002"><p class="gr8">Creation</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.20082002"><p class="gr8">Troll</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.10052002"><p class="gr8">Remind Me What I am Not</p></a></td>
+</tr>
+<tr>
+<td valign="top" colspan="2">
+<hr size="2" color="#C57A75">
+<p class="plink"><img src="pix/arrDbl_left.gif" border="0" alt="" align="middle">
+<a href="javascript:history.back()">back</a>
+<img src="pix/arrDbl_top.gif" border="0" alt="" align="middle">
+<a href="./vol1.html#head">top</a>
+</p>     
+<p class="gr8" align="center">Poetry of<br> Thourn Whaul<br>  </p> 
+</td>
+</tr> 
+</tbody></table>
+<!-- Index End-->
+       </td>
+    <td bgcolor="#FAFBD6" valign="center"><a name="twhaul.08092002"></a><p class="pre">Cross Eyed</p></td>
+  </tr>
+  <tr valign="top"> 
+    <td bgcolor="#FAFBD6" valign="top"> 
+<pre class='poem'>
+Cross eyed images on what is yet to be known.
+When in a shuffle, cards change hands 
+and things over sudden, quickly turn;
+no longer a price years spend to learn.
+
+For the hunted is a prey confused.
+Smuggling looks when caught stalking gifts
+(You always stepped in front of me with a smile.)
+In fear is a chest signed on the sweetly abused.
+But gifts found more suiting, another.
+(I watch you in motion; 
+probing of how much you gain from about the same.)
+Time based shifts appeal confessing on the done, 
+then rather.
+Balancing inhibits with suggestions.
+Following rules like a spinning eagle pair.
+Taken into winds that grasp the inception.
+Minding not, time taken for the dare.
+
+Long searched but found is the refuge, to precious;
+leaving is out of question!
+So we pass each others territory;
+in good company, no thanks need a mention.
+</pre>
+  </td></tr>
+<!-- Cross Eyed End-->
+
+
+
+
+<!-- The Flock Trip -->
+
+ <tr valign="top"> 
+    <td bgcolor="#EDEFBB"><p class="txt">Intro</p></td>
+    <td bgcolor="#FAFBD6" valign="top"> 
+       <p class="gr">It has been said that Nostradamus and his quatrains, depict and predict like an oracle at first sight.</p>
+       </td>
+  </tr>
+
+  <tr valign="top"> 
+    <td bgcolor="#EDEFBB" rowspan="2"> 
+<pre class='poem'>SQUEEZED
+IN BETWEEN
+POETRY
+</pre>
+<!-- Index-->
+<hr size="2" color="#C57A75">
+<table>
+<tbody><tr>
+<td valign="top" colspan="2" align="center"><p class="gr8">06/09/2002<br><i>The Flock Trip</i></p></td>
+</tr>
+<tr>
+<td valign="top" colspan="2"><p class="gr"></p><hr size="2" color="#C57A75"></td>
+<td>
+</td></tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.03092002"><p class="gr8">Coined System</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.30082002"><p class="gr8">Sun Stark</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.27082002"><p class="gr8">The Shaved Nun Tail Rap</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.24082002"><p class="gr8">Disturbed Kitten</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.22082002"><p class="gr8">Creation</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.20082002"><p class="gr8">Troll</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.10052002"><p class="gr8">Remind Me What I am Not</p></a></td>
+</tr>
+<tr>
+<td valign="top" colspan="2">
+<hr size="2" color="#C57A75">
+<p class="plink"><img src="pix/arrDbl_left.gif" border="0" alt="" align="middle">
+<a href="javascript:history.back()">back</a>
+<img src="pix/arrDbl_top.gif" border="0" alt="" align="middle">
+<a href="./vol1.html#head">top</a>
+</p>     
+<p class="gr8" align="center">Poetry of<br> Thourn Whaul<br>  </p> 
+</td>
+</tr> 
+</tbody></table>
+
+<!-- Index End-->
+       </td>
+    <td bgcolor="#FAFBD6" valign="center"><a name="twhaul.06092002"></a><p class="pre">The Flock Trip</p></td>
+  </tr>
+  <tr valign="top"> 
+    <td bgcolor="#FAFBD6" valign="top"> 
+<pre class='poem'>
+The flock has landed
+with no seed ever thrown.
+On a field green and mended.
+Full in pain, a new keeper has grown.
+
+People want times to be dear.
+No problem being a bit queer.
+Earth in shocking state.
+Past the river of blood, 2 and 8 will mate.
+(I am loosing inspiration, should I shutdown?)
+
+Cages clean as never seen.
+From all, only two saw eye to eye.
+</pre>
+  </td></tr>
+<!-- The Flock Trip End-->
+
+
+
+
+<!-- Coined System -->
+
+  <tr valign="top"> 
+    <td bgcolor="#EDEFBB" rowspan="2"> 
+<pre class='poem'>SQUEEZED
+IN BETWEEN
+POETRY
+</pre>
+<!-- Index-->
+<hr size="2" color="#C57A75">
+<table>
+<tbody><tr>
+<td valign="top" colspan="2" align="center"><p class="gr8">03/08/2002<br><i>&nbsp;Coined System</i></p></td>
+</tr>
+<tr>
+<td valign="top" colspan="2"><hr size="2" color="#C57A75"></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.30082002"><p class="gr8">Sun Stark</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.27082002"><p class="gr8">The Shaved Nun Tail Rap</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.24082002"><p class="gr8">Disturbed Kitten</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.22082002"><p class="gr8">Creation</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.20082002"><p class="gr8">Troll</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.10052002"><p class="gr8">Remind Me What I am Not</p></a></td>
+</tr>
+<tr>
+<td valign="top" colspan="2">
+<hr size="2" color="#C57A75">
+<p class="plink"><img src="pix/arrDbl_left.gif" border="0" alt="" align="middle">
+<a href="javascript:history.back()">back</a>
+<img src="pix/arrDbl_top.gif" border="0" alt="" align="middle">
+<a href="./vol1.html#head">top</a>
+</p>     
+<p class="gr8" align="center">Poetry of<br> Thourn Whaul<br>  </p> 
+</td>
+</tr> 
+</tbody></table>
+<!-- Index End-->
+
+
+       </td>
+    <td bgcolor="#FAFBD6" valign="center"><a name="twhaul.03092002"></a><p class="pre">Coined System</p></td>
+  </tr>
+  <tr valign="top"> 
+    <td bgcolor="#FAFBD6" valign="top"> 
+<pre class='poem'>
+Two sides of the coin
+Spin it my friend and watch it land.
+Short in decision, short in fall
+Careful now don't miss the hand.
+
+Taken by spin and magic turn, 
+Third side appears, the forgotten one
+Standing blank, late pockets burn
+To late now, the coin be gone.
+
+Third day of life has entered
+Just only confirming the aware
+Life as much as it is centred
+Then pluck what you can prepare.
+
+Found the circling birthmark
+Found third side of the coin
+Obscure images glowing stark
+What a joyous moment,
+a hit in the groin.
+Closing eyes from pain 
+and time come to clack.
+(Some would swear rather 
+ then clack; but I disagree;)  
+A ready tool is my scraper.
+in hurry seated down to notice,
+there is no toilet paper.
+</pre>
+  </td></tr>
+<!-- Coined System -->
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- Sun Stark -->
+
+ <tr valign="top"> 
+    <td bgcolor="#EDEFBB"><p class="txt">Intro</p></td>
+    <td bgcolor="#FAFBD6" valign="top"> 
+       <p class="gr">War kills in any form presented. 'Sun Stark' is dedicated to all innocent victims of September 11.
+       </p>
+       </td>
+  </tr>
+
+  <tr valign="top"> 
+    <td bgcolor="#EDEFBB" rowspan="2"> 
+<pre class='poem'>SQUEEZED
+IN BETWEEN
+POETRY
+</pre>
+<!-- Index-->
+<hr size="2" color="#C57A75">
+<table>
+<tbody><tr>
+<td valign="top" colspan="2" align="center"><p class="gr8">30/08/2002<br><i>Sun Stark</i></p></td>
+</tr>
+<tr>
+<td valign="top" colspan="2"><hr size="2" color="#C57A75"></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.27082002"><p class="gr8">The Shaved Nun Tail Rap</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.24082002"><p class="gr8">Disturbed Kitten</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.22082002"><p class="gr8">Creation</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.20082002"><p class="gr8">Troll</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.10052002"><p class="gr8">Remind Me What I am Not</p></a></td>
+</tr>
+<tr>
+<td valign="top" colspan="2">
+<hr size="2" color="#C57A75">
+<p class="plink"><img src="pix/arrDbl_left.gif" border="0" alt="" align="middle">
+<a href="javascript:history.back()">back</a>
+<img src="pix/arrDbl_top.gif" border="0" alt="" align="middle">
+<a href="./vol1.html#head">top</a>
+</p>     
+<p class="gr8" align="center">Poetry of<br> Thourn Whaul<br>  </p> 
+</td>
+</tr> 
+</tbody></table>
+<!-- Index End -->
+
+
+
+       </td>
+    <td bgcolor="#FAFBD6" valign="center"><a name="twhaul.30082002"></a><p class="pre">Sun Stark</p></td>
+  </tr>
+  <tr valign="top"> 
+    <td bgcolor="#FAFBD6" valign="top"> 
+<pre class='poem'>
+Two giants down long the suffer,
+And you follow best you can,
+in mourn molding a new 'him'.
+Abandoned made into a fin.
+No waves found to where we swim.
+
+Anaesthetic, a drag to deep,
+drowned pagers on a heap.
+Grasped direction to much care,
+Stifle rollbug gaining bare.
+
+Sun stark in oblivion,
+And you follow best you can.
+My love, lets try reach.
+The harden melody of behold,
+of loosen huff then unpluged leech.
+
+Soul was clasped out of skin.
+No waves found, to where we swim.
+</pre>
+
+  </td></tr>
+<!-- Sun Stark End-->
+
+
+
+
+
+
+<!-- The Shaved Nun Tail Rap -->
+  <tr valign="top"> 
+    <td bgcolor="#EDEFBB" rowspan="2"> 
+<pre class='poem'>SQUEEZED
+IN BETWEEN
+POETRY
+</pre>
+<!-- Index-->
+<hr size="2" color="#C57A75">
+<table>
+<tbody><tr>
+<td valign="top" colspan="2" align="center"><p class="gr8">27/08/2002<br><i>The Shaved Nun Tail Rap</i></p></td>
+</tr>
+<tr>
+<td valign="top" colspan="2"><hr size="2" color="#C57A75"></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.24082002"><p class="gr8">Disturbed Kitten</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.22082002"><p class="gr8">Creation</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.20082002"><p class="gr8">Troll</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.10052002"><p class="gr8">Remind Me What I am Not</p></a></td>
+</tr>
+<tr>
+<td valign="top" colspan="2">
+<hr size="2" color="#C57A75">
+<p class="plink"><img src="pix/arrDbl_left.gif" border="0" alt="" align="middle">
+<a href="javascript:history.back()">back</a>
+<img src="pix/arrDbl_top.gif" border="0" alt="" align="middle">
+<a href="./vol1.html#head">top</a>
+</p>     
+<p class="gr8" align="center">Poetry of<br> Thourn Whaul<br>  </p> 
+</td>
+</tr> 
+</tbody></table>
+<!-- Index End -->
+
+
+
+       </td>
+    <td bgcolor="#FAFBD6" valign="center"><a name="twhaul.27082002"></a><p class="pre">The Shaved Nun Tail Rap</p></td>
+  </tr>
+  <tr valign="top"> 
+    <td bgcolor="#FAFBD6" valign="top"> 
+<pre class='poem'>
+Across the street an old fell'a
+laundering his yellow stained underwear.
+Cotton reflects neon lights
+Words, 'No visitors after 23 PM'
+
+Don't ask now for prick pity. 
+You used up cotton resisting tear and wear.
+Old hands are patient,
+with titbits left to pick.
+Collected and saved, what for haven sake.
+
+Intaken is the stench of the collected,
+poor vapour of the sick.
+Fuelling a neon light,
+That flaps with pigeons in fright.
+
+A kicked bottle spins into corners
+Turning over a beggars tin
+Into the passage a nun, just arrived
+Tongue stapled eyelid,
+rocking beads between her teeth.
+What a pro!
+But was she worth waiting for?
+
+The shaved nun issues a warning:
+'If God is none, watch next of kin.'
+The beggar changed his sign next morning:
+'If the Devil is 1 and 0, how did I got in-between?'.
+
+Across the street an old fell'a
+Smiling back to his tail teller.
+Lifting now a female pair.
+Under armpit Amway bleach
+Whistling into evergreen,
+'life is all but what we teach'.
+</pre>
+
+  </td></tr>
+<!-- The Shaved Nun Tail Rap -->
+
+
+
+
+
+<!-- Disturbed Kitten -->
+
+  <tr valign="top"> 
+    <td bgcolor="#EDEFBB" rowspan="2"> 
+<pre class='poem'>SQUEEZED
+IN BETWEEN
+POETRY
+</pre>
+<!-- Index-->
+<hr size="2" color="#C57A75">
+<table>
+<tbody><tr>
+<td valign="top" colspan="2" align="center"><p class="gr8">24/08/2002<br><i>Disturbed Kitten</i></p></td>
+</tr>
+<tr>
+<td valign="top" colspan="2"><hr size="2" color="#C57A75"></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.22082002"><p class="gr8">Creation</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.20082002"><p class="gr8">Troll</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.10052002"><p class="gr8">Remind Me What I am Not</p></a></td>
+</tr>
+<tr>
+<td valign="top" colspan="2">
+<hr size="2" color="#C57A75">
+<p class="plink"><img src="pix/arrDbl_left.gif" border="0" alt="" align="middle">
+<a href="javascript:history.back()">back</a>
+<img src="pix/arrDbl_top.gif" border="0" alt="" align="middle">
+<a href="./vol1.html#head">top</a>
+</p>     
+<p class="gr8" align="center">Poetry of<br> Thourn Whaul<br>  </p> 
+</td>
+</tr> 
+</tbody></table>
+<!-- Index End -->
+
+
+
+       </td>
+    <td bgcolor="#FAFBD6" valign="center"><a name="twhaul.24082002"></a><p class="pre">Disturbed Kitten</p></td>
+  </tr>
+  <tr valign="top"> 
+    <td bgcolor="#FAFBD6" valign="top"> 
+<pre class='poem'>
+Defanged kitten, left barely alive.
+Such shared among convicts for pleasure's sake.
+Kitten's survival jerks, poor reason of vibe.
+An awful sight, to keep you awake.
+
+Proclaimed insane, villain is not.
+Destined master of his own wrought.
+
+She laid down late, next to having a man.
+Playing circles round and such.
+Man fast asleep, she opens her gown.
+Exited occasion, a solo touch.
+
+She whispers words learned by day.
+Mixing moan and the understood.
+Pushing beast out of hay.
+Pressing slowly enough to be wooed.
+
+Done without sweat, 
+she embraced the snored.
+Falling asleep contented and hot.
+Not minding to stay, restless and bored
+Pierced in trouble hawking snot.
+
+The same morning, rise and shine.
+Dreamy as if handed in a sham.
+Husband summons his concubine.
+Smelly thing in a day break come.
+
+Given into words,
+is the rest of the day.
+Ruled by hordes,
+makes a kitten pay.
+</pre>
+
+  </td></tr>
+<!-- Disturbed Kitten End -->
+
+
+
+
+
+
+
+
+<!-- Creation -->
+
+
+  <tr valign="top"> 
+    <td bgcolor="#EDEFBB" rowspan="2"> 
+<pre class='poem'>SQUEEZED
+IN BETWEEN
+POETRY
+</pre>
+<!-- Index-->
+<hr size="2" color="#C57A75">
+<table>
+<tbody><tr>
+<td valign="top" colspan="2" align="center"><p class="gr8">22/08/2002<br><i>Creation</i></p></td>
+</tr>
+<tr>
+<td valign="top" colspan="2"><hr size="2" color="#C57A75"></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.20082002"><p class="gr8">Troll</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.10052002"><p class="gr8">Remind Me What I am Not</p></a></td>
+</tr>
+<tr>
+<td valign="top" colspan="2">
+<hr size="2" color="#C57A75">
+<p class="plink"><img src="pix/arrDbl_left.gif" border="0" alt="" align="middle">
+<a href="javascript:history.back()">back</a>
+<img src="pix/arrDbl_top.gif" border="0" alt="" align="middle">
+<a href="./vol1.html#head">top</a>
+</p>     
+<p class="gr8" align="center">Poetry of<br> Thourn Whaul<br>  </p> 
+<p></p>
+</td>
+</tr> 
+</tbody></table>
+<!-- Index End -->
+
+
+
+       </td>
+    <td bgcolor="#FAFBD6" valign="center"><a name="twhaul.22082002"></a><p class="pre">Creation</p></td>
+  </tr>
+  <tr valign="top"> 
+    <td bgcolor="#FAFBD6" valign="top"> 
+<pre class='poem'>
+Poetry is creation!
+A mightier sword then pen.
+That captures dust particles,
+sun ray dancing,
+in the whirlpool of your den.
+
+Capturing only, but not zooming in.
+To explore further the world within.
+
+Tossed in the corner, a rotting book.
+Written once, reprinted many times.
+Collecting and making dust.
+The critic bites the hook.
+Cut with the pen, bleeds in rimes.
+What a curious moment, missing meaning just.
+
+Captured and taken away, in a lunatic suit.
+A frozen computer screen has suddenly reset.
+What a laugh, this mad delight.
+Captives cannot know what hasn't been saved.
+It has been lost together with its guide.
+</pre>
+  </td></tr>
+<!-- Creation End -->
+
+
+
+
+
+
+
+
+
+
+<!-- Troll -->
+
+ <tr valign="top"> 
+    <td bgcolor="#EDEFBB"><p class="txt">Intro</p></td>
+    <td bgcolor="#FAFBD6" valign="top"> 
+       <p class="gr">
+I discovered one night, this tiny scary looking bug.
+It looks like a tick but is a bit bigger.
+It comes out at night, and feeds on sugar traces, from cups that collect them self on my computer desk.
+Didn't kill it, but will clean up my act from now.
+       </p>
+       </td>
+  </tr>
+
+
+  <tr valign="top"> 
+    <td bgcolor="#EDEFBB" rowspan="2"> 
+<pre class='poem'>SQUEEZED
+IN BETWEEN
+POETRY
+</pre>
+<!-- Index-->
+<hr size="2" color="#C57A75">
+<table>
+<tbody><tr>
+<td valign="top" colspan="2" align="center"><p class="gr8">20/08/2002<br><i>Troll</i></p></td>
+</tr>
+<tr>
+<td valign="top" colspan="2"><hr size="2" color="#C57A75"></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.10052002"><p class="gr8">Remind Me What I am Not</p></a></td>
+</tr>
+<tr>
+<td valign="top" colspan="2">
+<hr size="2" color="#C57A75">
+<p class="plink"><img src="pix/arrDbl_left.gif" border="0" alt="" align="middle">
+<a href="javascript:history.back()">back</a>
+<img src="pix/arrDbl_top.gif" border="0" alt="" align="middle">
+<a href="./vol1.html#head">top</a>
+</p>     
+<p class="gr8" align="center">Poetry of<br> Thourn Whaul<br>  </p> 
+<p></p>
+</td>
+</tr> 
+</tbody></table>
+<!-- Index End -->
+
+
+
+       </td>
+    <td bgcolor="#FAFBD6" valign="center"><a name="twhaul.20082002"></a><p class="pre">Troll</p></td>
+  </tr>
+  <tr valign="top"> 
+    <td bgcolor="#FAFBD6" valign="top"> 
+<pre class='poem'>
+Since a while back, I got this Troll.
+Squatting there griming, on me left shoulder.
+It burrows thoughts, this unwanted maul.
+As time passes, becoming ever so bolder.
+
+The soul reason for all the blames.
+It itches my ear, and plays dirty games.
+Still only; from time to time.
+This gruesome and annoying,
+new found friend of mine.
+
+Pumpkin soup taken, it disappears for a while.
+Found out, it is much less there,
+when taken with wine.
+
+Learned to trick it, from day to day.
+Take some more wine, and it will go away.
+Then one day in hour of blissful merry.
+Shocked! I find out it turned into a fairy.
+</pre>
+
+  </td></tr>
+<!-- Troll End -->
+
+
+
+
+<!-- Remind Me What I am Not -->
+
+ <tr valign="top"> 
+    <td bgcolor="#EDEFBB"><p class="txt">Intro</p></td>
+    <td bgcolor="#FAFBD6" valign="top"> 
+       <p class="gr">
+Communism has been proven dead wrong. But how much did things changed with Capitalism.
+       </p>
+       </td>
+  </tr>
+
+
+  <tr valign="top"> 
+    <td bgcolor="#EDEFBB" rowspan="2"> 
+<pre class='poem'>SQUEEZED
+IN BETWEEN
+POETRY
+</pre>
+
+
+<!-- Index-->
+<hr size="2" color="#C57A75">
+<table>
+<tbody><tr>
+<td valign="top" colspan="2" align="center"><p class="gr8">10/05/2002<br><i>Remind Me What I am Not</i></p></td>
+</tr>
+<tr>
+<td valign="top" colspan="2"><p class="gr"></p><hr size="2" color="#C57A75"></td>
+</tr>
+<tr>
+</tr><tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.12112002"><p class="gr8">Facing The River Dream</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.05112002"><p class="gr8">Just Another Testament</p></a></td>
+</tr>
+<tr><td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.19082002_2"><p class="gr8">Dog Patrol</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.19082002_1"><p class="gr8">Abstained Melodrama</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.08092002"><p class="gr8">Cross Eyed</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.06092002"><p class="gr8">The Flock Trip</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.03092002"><p class="gr8">Coined System</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.30082002"><p class="gr8">Sun Stark</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.27082002"><p class="gr8">The Shaved Nun Tail Rap</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.24082002"><p class="gr8">Disturbed Kitten</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.22082002"><p class="gr8">Creation</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.20082002"><p class="gr8">Troll</p></a></td>
+</tr>
+<tr>
+<td valign="top" colspan="2">
+<hr size="2" color="#C57A75">
+<p class="plink"><img src="pix/arrDbl_left.gif" border="0" alt="" align="middle">
+<a href="javascript:history.back()">back</a>
+<img src="pix/arrDbl_top.gif" border="0" alt="" align="middle">
+<a href="./vol1.html#head">top</a>
+</p>     
+<p class="gr8" align="center">Poetry of<br> Thourn Whaul<br>  </p> 
+</td>
+</tr> 
+</tbody></table>
+<!-- Index End-->
+
+       </td>
+   <td bgcolor="#FAFBD6" valign="center"><a name="twhaul.10052002"></a><p class="pre">Remind Me What I am Not</p></td>
+  </tr>
+  <tr valign="top"> 
+    <td bgcolor="#FAFBD6" valign="top"> 
+<pre class='poem'>
+Somone from above likes me!
+And, I wish I was talking about God.
+In reality, the servant of his own success no one likes
+As servants make people think.
+
+So, loop back before you think.
+It is important who likes you!
+So, speek at times before you think
+It is important that people get to know you.
+
+The youtfull eye wants to see you dance
+And the old, only fight how mutch they want
+Not to forget, the fact how really late their are.
+
+Now, when we also realised the level of shame
+Don't be silenced, since its known, no one can jump their skin.
+Should we tattoo the moment where it fits appropriately?
+Sure not! As crap, eventually has to be wiped by someone.
+
+After all said, if still bound to things that don't work.
+Don't despair
+someone from above likes you.
+</pre>
+
+  </td></tr>
+<!-- Remind Me What I am Not -->
+
+
+<!-- Pages End -->
+   <tr valign="middle" align="center"> 
+    <td bgcolor="#EDBD49" colspan="2">
+       <p class="stxt"><b>Copyright ï¿½ <a href="mailto:viw@nospam.to.excite.com">Thourn Whaul</a>  all rights reserved.</b><br>
+       </p>
+    </td>
+  </tr>
+
+
+</tbody></table>
+
+
+</body></html>
\ No newline at end of file
diff --git a/htdocs/cgi-bin/docs/Squeezed In Between Poetry/vol2.html b/htdocs/cgi-bin/docs/Squeezed In Between Poetry/vol2.html
new file mode 100644 (file)
index 0000000..97b8c48
--- /dev/null
@@ -0,0 +1,485 @@
+
+<!-- saved from url=(0055)index.html -->
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1252"><title>Squeezed In Between Poetry Vol II</title>
+<style type="text/css">
+<!--
+       body{
+  background-color:#C57A75;
+  font-family: Tahoma, Helvetica, sans-serif;
+}
+p{  font-size: 12pt; }
+p.h1{  font-size: 20pt; font-weight: bold;}
+p.h2{  font-size: 14pt; font-weight: bold;}
+p.h3{  font-size: 12pt; font-weight: bold;}
+p.txt {  font-size: 10pt; font-weight: bold;}
+p.stxt{  font-size: 8pt; font-weight: bold; }
+p.wh {  font-size: 10pt; font-weight: bold; color: #ffffff}
+p.gr {  font-size: 10pt; font-weight: bold; color: #666666}
+p.gr8 {  font-size: 7pt; font-weight: bold; color: #666666}
+p.plink {  font-size: 10pt; font-weight: bold; color: #C57A75}
+p.pre{font-family:  Tahoma, Garamond, Helvetica; font-size: 13pt; font-weight: bold;}
+.poem{font-family:  Tahoma, Garamond, Helvetica; font-size: 13pt; background-color: #EDEFBB; padding: 10px}
+
+a  {
+       color : #666666;
+       text-decoration : none;
+}
+
+a:Visited  {
+       color : #666666;
+       font-style : normal;
+}
+
+a:Active  {
+       color : #666666;
+}
+
+a:Hover  {
+       color : #C57A75;
+       text-decoration : underline;
+       background-color : #EDEFBB;
+       font-style : bold;
+}
+-->
+</style>
+</head>
+<body leftmargin="0" topmargin="10" marginwidth="0" marginheight="0">
+
+<a name="head"></a>
+
+<table width="610" border="0" cellspacing="2" cellpadding="10" align="center" bgcolor="#000000">
+<tbody><tr> 
+<td bgcolor="#EDEFBB">
+<p class="h1" align="center">
+<img src="pix/thournwhaul_logo.jpg" border="2" alt="" align="middle">&nbsp;&nbsp;&nbsp;Squeezed In Between Poetry
+</p>
+<table align="center" cellpadding="10"><tbody><tr>
+<td><p class="h2"><a href="vol1.html">Volume I</a></p></td>
+<td><p class="h2" align="center">Volume II</p></td>
+</tr>
+</tbody></table>
+</td>
+</tr>
+<tr> 
+<td bgcolor="#EDEFBB">
+<p class="gr">
+Following is a collection of poems in the genre of story telling.<br>
+Please wander of to <a href="./vol1.html"><font color="black"><b>Volume I</b></font></a> and find out what made this small website come into life.
+Also poems there, might breathe in more sense of what is being contained within here.<br>
+
+
+<br>("Those who dream by day are cognizant of many things which
+escape those who dream only by night" - Edgar Allen Poe)
+<br><br>
+(What you can do, or dream you can do, begin it; boldness has genius,<br> power and magic in it.
+- Johann von Goethe )
+ <br><br>
+ (
+<a href="http://www.upword.com/wilde/dorgray.html#3" target="_ex"> <font color="black">
+          <br>
+<b>
+The Picture of Dorian Gray     
+by                                                             
+Oscar Wilde
+</b></font>
+</a>
+
+         <br>
+CHAPTER 1 <br>
+The studio was filled with the rich odour of roses, and when the light summer wind stirred amidst the trees of the garden, there came through the open door the heavy scent of the lilac, or the more delicate perfume of the pink-flowering thorn... <br>
+)
+
+<br><br>
+<br><br>
+
+
+
+</p>            
+</td>
+</tr>
+</tbody></table>
+<br>
+
+<!-- Pages Start -->
+<table width="610" border="0" cellspacing="2" cellpadding="10" align="center" bgcolor="#000000">
+
+
+
+<!-- A Walk to Frame Sydney -->
+  <tbody><tr valign="top"> 
+    <td bgcolor="#EDEFBB" rowspan="2"> 
+<pre>SQUEEZED
+IN BETWEEN
+POETRY
+</pre>
+
+<!-- Index-->
+<hr size="2" color="#C57A75">
+<table>
+<tbody><tr>
+<td valign="top" colspan="2" align="center"><p class="gr">18-Aug-2003<br><i>A Walk to Frame Sydney</i></p></td>
+ </tr> 
+<tr>
+<td valign="top" colspan="2"><p class="gr"></p><hr size="2" color="#C57A75"></td>
+</tr>
+<tr>
+
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="vol1.html#twhaul.25062003"><p class="gr8">Swamp Rejoiced Cricket Drum Noise</p></a></td>
+</tr>
+
+<tr>
+<td valign="top" colspan="2" align="center"><p class="gr"> <b>- Volume I -</b></p></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.12112002"><p class="gr8">Facing The River Dream</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.05112002"><p class="gr8">Just Another Testament</p></a></td>
+</tr>
+<tr><td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.19082002_2"><p class="gr8">Dog Patrol</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.19082002_1"><p class="gr8">Abstained Melodrama</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.08092002"><p class="gr8">Cross Eyed</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.06092002"><p class="gr8">The Flock Trip</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.03092002"><p class="gr8">Coined System</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.30082002"><p class="gr8">Sun Stark</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.27082002"><p class="gr8">The Shaved Nun Tail Rap</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.24082002"><p class="gr8">Disturbed Kitten</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.22082002"><p class="gr8">Creation</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.20082002"><p class="gr8">Troll</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.10052002"><p class="gr8">Remind Me What I am Not</p></a></td>
+</tr>
+<tr>
+<td valign="top" colspan="2">
+<hr size="2" color="#C57A75">
+<p class="plink"><img src="pix/arrDbl_left.gif" border="0" alt="" align="middle">
+<a href="javascript:history.back()">back</a>
+<img src="pix/arrDbl_top.gif" border="0" alt="" align="middle">
+<a href="#head">top</a>
+</p>
+<p class="gr8" align="center">Poetry of<br> Thourn Whaul<br>  </p> 
+</td>
+</tr><tr>
+<td valign="top" colspan="2">
+<!--
+<hr size="2" color="#C57A75">
+<p class="plink"><img src="arrDbl_left.gif" border=0 alt="" align="middle">
+<a href="javascript:history.back()">back</a>
+<img src="arrDbl_top.gif" border=0 alt="" align="middle">
+<a href="#head">top</a>
+-->
+<p></p>
+</td>
+</tr> 
+</tbody></table>
+<!-- Index End-->
+       </td>
+    <td width="80%" bgcolor="#FAFBD6" valign="center"><a name="twhaul.18082003"></a><p class="pre">A Walk to Frame Sydney</p></td>
+  </tr>
+  <tr valign="top"> 
+    <td bgcolor="#FAFBD6" valign="top"> 
+<pre>Immunised equilibrium riddled the porosity we face
+all downhill now into a carrot grinding better health
+The dealers indeed only ware bravado penguin suites
+"Pick the best as any good book would tell you, Son"!
+But the real book is buried past all distractions
+It takes Dvorak guts and a staccato walk to frame
+To find some answers in the late Goya walls
+"Off you go, find your gay bar translator"
+
+She went, leaving the soup kitchen behind
+Found her book, but had no money left.
+No one saw her and no one knew him
+Till now!
+
+Pumpernickel abused by Rosamunde 
+a sweet-talk worth a waitress
+Everyone was smiling, enjoying 
+amber recall of ghost encounters
+Disfiguring sex of the local priest, 
+politician, decant &amp; moron
+Minding their own business 
+    imitated reads
+Winding pastoral tick-tocks or 
+jail house torments in showers
+Finding Art Deco placebo soup kitchens
+Here, no translator is needed but creed 
+"All for one and all for a jazzy lip job".
+The translator balances the dictaphone
+marching to Bach in a 3 buy 3 rented opera house
+And freedom is permanently parked outside of form 
+for a hobo sap walk saving up for book and cover.
+
+Still, no one wins over Maharaja pigeon dreams
+They keep on reminding those willing some read
+"Relax, look over here, my books make the box
+I'll give you one, but it will crash the nest".
+
+</pre>
+        <p></p>
+       <p>
+       <a href="zebra.mp3">Click here to get the song complimenting this poem</a>
+       </p>
+</td></tr>
+<!-- A Walk to Frame Sydney -->
+
+
+
+<!-- Swamp Rejoiced Cricket Drum Noise -->
+  <tr valign="top"> 
+    <td bgcolor="#EDEFBB" rowspan="2"> 
+<pre>SQUEEZED
+IN BETWEEN
+POETRY
+</pre>
+
+<!-- Index-->
+<hr size="2" color="#C57A75">
+<table>
+<tbody><tr>
+<td valign="top" colspan="2" align="center"><p class="gr">25-Jun-2003<br><i>Swamp Rejoiced Cricket Drum Noise</i></p></td>
+</tr> 
+<tr>
+<td valign="top" colspan="2"><p class="gr"></p><hr size="2" color="#C57A75"></td>
+</tr>
+<tr>
+</tr><tr>
+<td valign="top" colspan="2" align="center"><p class="gr8"> - Volume I -</p></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.12112002"><p class="gr8">Facing The River Dream</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.05112002"><p class="gr8">Just Another Testament</p></a></td>
+</tr>
+<tr><td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.19082002_2"><p class="gr8">Dog Patrol</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.19082002_1"><p class="gr8">Abstained Melodrama</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.08092002"><p class="gr8">Cross Eyed</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.06092002"><p class="gr8">The Flock Trip</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.03092002"><p class="gr8">Coined System</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.30082002"><p class="gr8">Sun Stark</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.27082002"><p class="gr8">The Shaved Nun Tail Rap</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.24082002"><p class="gr8">Disturbed Kitten</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.22082002"><p class="gr8">Creation</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.20082002"><p class="gr8">Troll</p></a></td>
+</tr>
+<tr>
+<td valign="top"><img src="pix/arrDbl_right.gif" border="0" alt="" align="middle"></td>
+<td><a href="./vol1.html#twhaul.10052002"><p class="gr8">Remind Me What I am Not</p></a></td>
+</tr>
+<tr>
+<td valign="top" colspan="2">
+<hr size="2" color="#C57A75">
+<p class="plink"><img src="pix/arrDbl_left.gif" border="0" alt="" align="middle">
+<a href="javascript:history.back()">back</a>
+<img src="pix/arrDbl_top.gif" border="0" alt="" align="middle">
+<a href="index.html#head">top</a>
+</p>
+<p class="gr8" align="center">Poetry of<br> Thourn Whaul<br>  </p> 
+</td>
+</tr><tr>
+<td valign="top" colspan="2">
+<!--
+<hr size="2" color="#C57A75">
+<p class="plink"><img src="arrDbl_left.gif" border=0 alt="" align="middle">
+<a href="javascript:history.back()">back</a>
+<img src="arrDbl_top.gif" border=0 alt="" align="middle">
+<a href="#head">top</a>
+-->
+<p></p>
+</td>
+</tr> 
+</tbody></table>
+<!-- Index End-->
+       </td>
+    <td width="80%" bgcolor="#FAFBD6" valign="center"><a name="twhaul.25062003"></a><p class="pre">Swamp Rejoiced Cricket Drum Noise</p></td>
+  </tr>
+  <tr valign="top"> 
+    <td bgcolor="#FAFBD6" valign="top"> 
+<pre>In first voice suddenly it takes away
+the cabbage cricket sounds pitch of tear
+a chanson soft it trembles in its play
+just making a hiss silent drums of fear
+
+Never wished to have to fight
+As jewels when once drawn
+pull a sparkle to be matched
+Turn the gravel out be grown
+stand for life's worth's again
+Telling this, out go and fancy 
+From afar recall don't refrain
+Brave in battle brave ardency
+of days past of no known pain
+Telling, brush away the swamps
+Dare go recall to sain sustain
+wishes thrown into hat of punts.
+
+The path was usual but what a finding
+of Solomon riches such unseen, untouched
+Weakness ever now passing to be blinding
+as if to mask protect the carriers might
+bringing spoils in skirtings patched.
+
+Voiceless sitting deep in foliage
+invisible witness, tired valiance
+Hidden behind fem growth of coilage
+watching the secret wild people dance
+Tribe brought some blessings in food
+I've waited for the end of the binge
+Watched for long, lost to horror glued
+near a shrine at the forest fringe. 
+Agenda was about youth coming into age
+for these folk of both gender sacred
+what unfolded edged on outrage
+The lot sung, women's breasts swagged
+calling spirits scaring the encircled
+Dig, dig or we will never end, dig
+with your hands, and most did
+Till a bamboo bundle large unveiled
+an old body placed aside in silence
+Then cries slammed rhythm continued
+as the elders on rot eagerly peeled
+Youth was forced with urine to awake
+a body dry and dirty "don't be thrilled"!
+Most obliged but some for no sake
+just couldn't do it; 'til morn' brake.
+
+A generations cast to the alimony
+left out, eight girls and two lads 
+Near the end of the ceremony 
+left out, to face nightmare alidades
+One of the boys and all the girls 
+succumbed finally to torment frills
+But desperate tribe men lifted spears
+as the last odd one wouldn't budge
+tips cut touching skin, just to smudge
+It would've been a terror gruesome end
+If a loud voice didn't break into echo 
+The whole tribe into silence 
+The whole tribe dropped to their knees.
+The forgotten dead body was now standing
+Risen and pointing making way to the boy
+A boy stubborn, shaking, holding tears
+rejecting reason of forced fait ploy.
+"He shall be the chosen one!"
+You are the next Shaman
+My Apprentice!
+He must marry the eight least girls
+The other boy will be his shadow 
+enemy and friend, successor if failed
+his nature wisdom's challenge coil.
+For good or for worse let us rejoice, 
+let them now be, let them serve
+This our God's wish, our voice
+against the evil peril perve"
+
+As the tribe left a weakness begun
+A bitten target of insect stung
+A body laying hiding from it all
+A body swarmed with reddish adore
+in flakes float of unnoticed spore
+Tried to scream, run out tall
+but to late, no voice, no accord
+poison melting start flesh to dung. 
+Painful, illusive was the effort
+of a ghost crawling out of growth 
+Thinking nothing, going forth
+fighting for survival for life's worth
+getting out, slow steady deport.
+
+Thankful reached the laid blessings
+took first drink on some sweet tea
+Days passed slow, getting better
+feeding on beetles half cooked pea.
+Such discovered
+by the rest of the expedition
+but trust lost at the moment 
+lost even to amend
+For no sake of company 
+No tale ambition, telling
+was a stashed giant diamond 
+wrapped in a Shaman's headband.
+
+</pre>
+<pre>...</pre>
+        <p></p>
+</td></tr>
+<!-- Swamp Rejoiced Cricket Drum Noise End -->
+
+
+
+<!-- Pages End -->
+  <tr valign="middle" align="center"> 
+    <td bgcolor="#EDBD49" colspan="2">
+       <p class="stxt"><b>Copyright ï¿½ <a href="mailto:viw@nospam.to.excite.com">Thourn Whaul</a>  all rights reserved.</b><br>
+       Feel free to hyper link to this pages and content; however no permission has been given to copy,<br>
+       use or publish any content or style from this website.</p>
+    </td>
+  </tr>
+</tbody></table>
+
+
+</body></html>
\ No newline at end of file
diff --git a/htdocs/cgi-bin/images/VS-on-METABOX-42.png b/htdocs/cgi-bin/images/VS-on-METABOX-42.png
new file mode 100644 (file)
index 0000000..7c05de9
Binary files /dev/null and b/htdocs/cgi-bin/images/VS-on-METABOX-42.png differ
index 2c52f64e33411567f2f5ca547120ba3460e37d3e..7f953e8816ef759bff522125db1c6b547e54529c 100755 (executable)
@@ -34,37 +34,18 @@ use lib "system/modules";
 require CNFParser;
 require CNFNode;
 
-our $GLOB_HTML_SERVE = "{}/*.cgi {}/*.htm {}/*.html {}/*.md {}/*.txt";
+our $GLOB_HTML_SERVE = "'{}/*.cgi' '{}/*.htm' '{}/*.html' '{}/*.md' '{}/*.txt'";
 our $script_path = $0;
 $script_path =~ s/\w+.cgi$//;
 
-my $v = q/
-<<$APP_DESCRIPTION<CONST>
-This application presents just
-a nice multi-line template.
->>/;
-# $v =~ m/\s*(<<[@%]<) ([\$@%]?\w+)(>)* | (>>)
-#        /gx and my @captured = @{^CAPTURE};
-
-
-$v =~ m/(<{2,3})                          
-            ([\$@%]?\w+)
-                 (<?)  ([\w\s]+)   (>?)
-        |(<<[@%]<)  ([\$@%]?\w+) (>?)
-        |(>>)
-       /gx and my @captured = @{^CAPTURE};
-
-
-
-
 
 exit main();
 
 sub main {    
     my $html = obtainDirListingHTML('docs');
-    my $cnf = CNFParser->new(
+    my $cnf  = CNFParser -> new(
                             $script_path."index.cnf",{
-                             DO_enabled => 1, 
+                             DO_ENABLED => 1, HAS_EXTENSIONS=>1,
                              ANONS_ARE_PUBLIC => 1,
                                                    PAGE_HEAD    => "<h2>Index Page of Docs</h2>", 
                                                    PAGE_CONTENT => $html, 
@@ -80,17 +61,15 @@ sub main {
 sub obtainDirListingHTML {
     my ($dir, $ret) = (shift,"");    
     $ret .="<b>$dir &#8594;</b><ul>\n";
-    $ret .= listFiles($dir,$script_path);
-    my $handle;
-    opendir ($handle, $script_path.$dir) or die "Couldn't open directory, $!";
+    $ret .= listFiles($dir,$script_path,"");    
+    opendir (my $handle, $script_path.$dir) or die "Couldn't open directory, $!";
     while (my $node = readdir $handle) {
         my $file_full_path = "$script_path$dir/$node";
         if($node !~ /^\./ && -d $file_full_path){
            $ret .= obtainDirListingHTML($dir.'/'.$node);
         }
     }
-    closedir $handle;
-    
+    closedir $handle;    
     $ret .= "</ul>";
     return $ret;
 }
@@ -100,12 +79,13 @@ sub listFiles ($){
     my $spec = $GLOB_HTML_SERVE; $spec =~ s/{}/$path/gp;
     my @files = glob ($spec);        
     foreach my $file(@files){
+            ($file =~ m/(\w+\.\w*)$/g);
+            my $name = $1;
             if($file =~ /\.md$/){
-                my @title = getDocTitle($file);            
-                $ret .= qq(\t\t\t<li><a href="$dir/$title[0]">$title[1]</a></li>\n);
-            }else{
-                ($file =~ m/(\w+\.\w*)$/g);
-                $ret .= qq(\t\t\t<li><a href="$dir/$1">$1</a></li>\n);
+                my @title = getDocTitle($file);                
+                $ret .= qq(\t\t\t<li><a href="$dir/$title[0]">$title[1] - $name</a></li>\n);
+            }else{                
+                $ret .= qq(\t\t\t<li><a href="$dir/$name">$name</a></li>\n);
             }
     }    
     return $ret;
index 629be9eabd0acde986831abfb474c631ab6ead72..7ddedc9ba28fc58124cb7d8aed5bb990223b3f76 100644 (file)
@@ -1,8 +1,8 @@
 !CNF2.8
 
 <<@<%HTTP_HEADER>
--charset =   UTF8
--expires =   +5s
+-charset =   "UTF8"
+-expires =   "+5s"
 >>
 
 <<HEADER<TREE> _HAS_PROCESSING_PRIORITY_
     #content ul {        
         padding-left: 20px;  
     }
+    #content li {
+        padding: 0px;          
+        margin-left:30px;
+    }
 
     #content a:hover {
         color: #ff4d21;
         margin:5px;
     }
 
-    .span_status {
-        position: absolute;
-        top: 80px; left:420px;
-        border: 2px solid #94cde7;
-        padding: 5px;
-        text-align: center;
-        background: #ccffff;        
-        text-decoration-style: wavy;
-    }
+
     .md_doc {
         background: white;
         border: 1px solid gray;
         padding: 10px; margin: 5px;
         text-align: left;
     }
+    
+    .md_doc ul{        
+        font-size: large;
+    }
+
+    .md_doc p{
+        margin: 0 auto;
+        padding: 5px;        
+        vertical-align: left;
+        text-align: left;      
+        font-weight: normal;
+
+    }
+
+    .md_doc blockquote  {
+        margin-top: 0;
+        margin-bottom: 16px;   
+        background:#b2f8ef;     
+        border-left: 3px solid #94cde7;
+        border-top:  2px solid #94cde7;
+        border-right:  2px solid #94cde7;
+    }
+    .md_doc blockquote  > :last-child{
+        border-bottom:  2px solid #94cde7;
+    }
+
     .div_img{        
         height:450px;
     }
         height:80%;
     }
 
-    #doc_display p{
-        margin: 0 auto;
-        padding: 5px;        
-        vertical-align: left;
-        text-align: left;
-    }
 
     .bra {
         color: maroon;
-        padding: 2px;
-        font-weight: bold;
+        padding: 2px;        
+    }
+    .var {
+        color: blue;        
+    }
+    .opr {
+        color: blue;        
     }
-    .key {
-        color: green;
-        font-weight: bolder;       
+    .val {
+        color: gray;        
     }
+    .str {
+        color: red;        
+        font-weight: bold;   
+    }
+    .inst {
+        color: green;        
+        font-weight: bold;   
+    }
+
+
+
+    .pre {
+        border:1px solid black;
+        background: rgba(255,255,255,0.2);
+        padding:15px;
+        text-align: left;        
+    }
+    .sh{
+        background: black;        
+        color: lightgreen;
+        padding:15px;
+    }
+
     div .html {
         border:1px solid lightgray;
         background: rgba(255,255,255,0.2);
-        padding-left:5px;
+        padding:10px;
+        font-family:monospace;
         text-align: left;
     }
-    div .code {
+
+    div .CNF {
         border:1px solid lightgray;
         background: rgba(255,255,255,0.2);
-        padding-left:5px;
+        padding:10px; 
         font-family:monospace;
         text-align: left;
+        padding-bottom: 10px;
     }
-    ul {
-        margin: 0px;
-        padding: 10px;  
-        padding-top:0px;
+
+    .CNF h1{
+        text-align: left;
+        padding-left: 15px;
+        margin-top: -20px;
+        height: 20px;
+        line-height: 20px;
+        font-size: 15px;
     }
-    #content li {
-        padding: 0px;          
-        margin-left:30px;
+
+    .CNF h1 span{
+        background-color: white;
+        border:1px solid lightgray;
+        color:lightgray;
+        font-size:small;
+        padding: 3px;
+        padding-left: 5px;
+        padding-right: 5px;        
     }
-    .pre {
-        border:1px solid black;
+
+
+    div .perl {
+        border:1px solid lightgray;
         background: rgba(255,255,255,0.2);
-        padding:15px;
+        padding-left:5px;
+        font-family:monospace;
+        text-align: left;  
+        padding-bottom: 10px;      
+    }
+
+    .perl h1{
         text-align: left;
+        padding-left: 15px;
+        margin-top: -10px;
+        height: 20px;
+        line-height: 20px;
+        font-size: 15px;
+    }
+
+    .perl h1 span{
+        background-color: white;
+        border:1px solid lightgray;
+        color:lightgray;
+        font-size:small;
+        padding: 3px;
+        padding-left: 5px;
+        padding-right: 5px;        
+    }
+
+    .span_status {
+        position: absolute;
+        top: 80px; left:420px;
+        border: 2px solid #94cde7;
+        padding: 5px;
+        text-align: center;
+        background: #ccffff;        
+        text-decoration-style: wavy;
     }
 
 ]#]
@@ -144,13 +233,11 @@ function onIndexBodyLoad(){
             );
         }
     );
-
-
     onBodyLoadGeneric();    
 }
-
 function loadDocResult(content){
     $('#doc_display').html(content);
+    $(document).scrollTop($("#doc_display").offset().top);
 }
 ]#]
 >SCRIPT>
@@ -232,15 +319,12 @@ function loadDocResult(content){
 
 <<INFO_MD<ESCAPED>
 
-\<\<$APP_DESCRIPTION\<CONST\>
-This application presents just
-a nice multi-line template.
-\>\>
 
 ### INFO
-This Documentation listing for the [LifeLog](https://github.com/wbudic/LifeLog) Application.
+\> This Page is the Documentation listing coming with the [LifeLog](https://github.com/wbudic/LifeLog) Application.
+\>
+\>\>[Open Source License](https://choosealicense.com/licenses/isc/)
 
-[Open Source License](https://choosealicense.com/licenses/isc/)
 
 >>
 
@@ -252,6 +336,13 @@ This Documentation listing for the [LifeLog](https://github.com/wbudic/LifeLog)
 
 
 
-
-
-
+```CNF
+\<\<\<CONST
+$APP_NAME       = "Test Application"
+$APP_VERSION    = v.1.0
+\>\>\>
+\<\<$APP_DESCRIPTION<CONST>
+This application presents just
+a nice multi-line template.
+\>\>
+```
index ec8aef5b3d37e09856ec530ffc6779eb69d7a1bf..788da49dbfc93898fc29a69a264421064b6a123e 100755 (executable)
@@ -1084,6 +1084,7 @@ else{
         <a class="a_" href="config.cgi" onclick="display('Please Wait!');">Config</a><hr>
         <a class="a_" id="lnk_show_all" onclick="return showAll();">Show All <span  class="ui-icon ui-icon-heart"></span></a><hr>
         $sm_reset_all
+               <a class="a_" href="index.cgi">Index</a><hr>
         <a class="a_" href="login_ctr.cgi?logout=bye">LOGOUT</a><br><hr>
         <span style="font-size: x-small; font-weight: bold;">$vmode</span><br>
         <span style="font-size: x-small; font-weight: bold;">).$sql.q(</span><br>
index f24cbd02dec5c55ebdddf5d9f207346b42341880..83ab44e8caf21ef3784b83569fc1f0cfc8eb3e15 100644 (file)
@@ -270,7 +270,7 @@ sub process {
                                 $valing = 0;
                             }else{         
                                 my $a = $isArray;
-                                my $property = CNFNode -> new({'_'=>$sub, '@' => \$self});                                   
+                                my $property = CNFNode->new({'_'=>$sub, '@' => \$self});                                   
                                 $property->process($parser, $body);
                                 $isArray = $a;
                                 if($tag eq '@@'){
@@ -377,6 +377,7 @@ sub process {
             }
         }        
     }
+
     $self->{'@@'} = \@array if @array;
     $self->{'#'} = \$val if $val;
     return \$self;
index a9f1eea442b2c0c0621d23fc17cfaa4cbf438195..19821a2ed6b04883d140e7191644d1426c124801 100644 (file)
@@ -15,14 +15,11 @@ use Hash::Util qw(lock_hash unlock_hash);
 use Time::HiRes qw(time);
 use DateTime;
 
-
 # Do not remove the following no critic, no security or object issues possible. 
 # We can use perls default behaviour on return.
 ##no critic qw(Subroutines::RequireFinalReturn,ControlStructures::ProhibitMutatingListFunctions);
 
 use constant VERSION => '2.8';
-
-our $CONSTREQ = 0;
 our @files;
 our %lists;
 our %properties;
@@ -32,16 +29,25 @@ our %instructors;
 # Package fields are always global in perl!
 ###
 our %ANONS;
+#private -> Instance fields:
+                my  $anons;
+                my %includes;
+                my %instructs;    
 ###
 # CNF Instruction tag covered reserved words. 
 # You probably don't want to use these as your own possible instruction implementation.
 ###
-our %RESERVED_WORDS = (CONST=>1, DATA=>1,   FILE=>1, TABLE=>1,  TREE=>1,
+our %RESERVED_WORDS = (CONST=>1, CONSTANT=>1, VARIABLE=>1, VAR=>1,  FILE=>1, TABLE=>1,  TREE=>1,
                        INDEX=>1, VIEW=>1,   SQL=>1,  MIGRATE=>1, 
                        DO=>1,    PLUGIN=>1, MACRO=>1,'%LOG'=>1, INCLUDE=>1, INSTRUCTOR=>1);
-sub isReservedWord {my ($self, $word)=@_; return $RESERVED_WORDS{$word}}
+sub isReservedWord    { my ($self, $word)=@_; return $word ? $RESERVED_WORDS{$word} : undef }
 ###
 
+###
+# Constance required setting, if set to 1, const method when called will rise exception rather then return undef.
+###
+our $CONSTREQ = 0;
+
 ###
 # Create a new CNFParser instance.
 # $path - Path to some .cnf file, to parse, not compsuluory to add now.
@@ -51,19 +57,20 @@ sub new { my ($class, $path, $attrs, $del_keys, $self) = @_;
     if ($attrs){
         $self = \%$attrs;        
     }else{
-        $self = {   #Case Sensitive don't tell me you set Do_enabled and it ain't working?
-                    DO_enabled      =>0, # Enable/Disable DO instruction. Which could evaluated potentially be an doom execute destruction.
-                    ANONS_ARE_PUBLIC=>1, # Anon's are shared and global for all of instances of this object, by default.
-                    ENABLE_WARNINGS =>1, # Disable this one, and you will stare into the void, on errors or operations skipped.
-                    STRICT          =>1, # Enable/Disable strict processing to FATAL on errors, this throws and halts parsing on errors.
-                    DEBUG           =>0  # Not internally used by the parser, but possible a convience bypass setting for code using it.
+        $self = {
+                  DO_ENABLED      => 0, # Enable/Disable DO instruction. Which could evaluated potentially be an doom execute destruction.
+                  ANONS_ARE_PUBLIC=> 1, # Anon's are shared and global for all of instances of this object, by default.
+                  ENABLE_WARNINGS => 1, # Disable this one, and you will stare into the void, on errors or operations skipped.
+                  STRICT          => 1, # Enable/Disable strict processing to FATAL on errors, this throws and halts parsing on errors.
+                  HAS_EXTENSIONS  => 0, # Enable/Disable extension of custom instructions. These is disabled by default and ingored.
+                  DEBUG           => 0  # Not internally used by the parser, but possible a convience bypass setting for code using it.
         }; 
-    }
+    }    
     $CONSTREQ = $self->{'CONSTANT_REQUIRED'};
     if (!$self->{'ANONS_ARE_PUBLIC'}){ #Not public, means are private to this object, that is, anons are not static.
          $self->{'ANONS_ARE_PUBLIC'} = 0; #<- Caveat of Perl, if this is not set to zero, it can't be accessed legally in a protected hash.
          $self->{'__ANONS__'} = {};
-    }
+    }    
     $self->{'__DATA__'}  = {};
     if(exists $self->{'%LOG'}){
         if(ref($self->{'%LOG'}) ne 'HASH'){
@@ -72,7 +79,8 @@ sub new { my ($class, $path, $attrs, $del_keys, $self) = @_;
             $properties{'%LOG'} = $self->{'%LOG'}
         }
     }
-    $self->{'STRICT'} = 1  if not exists $self->{'STRICT'}; #make strict by default if missing.    
+    $self->{'STRICT'} = 1  if not exists $self->{'STRICT'}; #make strict by default if missing. 
+    $self->{'HAS_EXTENSIONS'} = 0 if not exists $self->{'HAS_EXTENSIONS'};
     bless $self, $class; $self->parse($path, undef, $del_keys) if($path);
     return $self;
 }
@@ -82,13 +90,12 @@ sub import {
     my $caller = caller;    
     {
          *{"${caller}::configDumpENV"} = \&dumpENV;
-         *{"${caller}::anon"} = \&anon;
-         *{"${caller}::SQL"} = \&SQL;
+         *{"${caller}::anon"}          = \&anon;
+         *{"${caller}::SQL"}           = \&SQL;
     }
     return 1;    
 }
 
-
 ###
 # Post parsing instructed special item objects.
 ##
@@ -96,7 +103,7 @@ package InstructedDataItem {
     
     our $dataItemCounter = int(0);
 
-    sub new { my ($class, $ele, $ins, $val) = @_;        
+    sub new { my ($class, $ele, $ins, $val) = @_;
         my $priority = ($val =~ s/_HAS_PROCESSING_PRIORITY_//si)?1:0;
         bless {
                 ele => $ele,
@@ -113,6 +120,8 @@ package InstructedDataItem {
 }
 #
 
+
+
 ###
 # PropertyValueStyle objects must have same rule of how an property body can be scripted for attributes.
 ##
@@ -245,16 +254,18 @@ sub anon {  my ($self, $n, $args)=@_;
     return $anechoic;
 }
 
+###
 # Validates and returns a constant named value as part of this configs instance.
-# Returns false if it doesn't exist.
+# Returns undef if it doesn't exist, and exception if constance required is set;
 sub const { my ($self,$c)=@_; 
     if(exists $self->{$c}){
        return  $self->{$c}
     }
+    CNFParserException->throw("Required constants variable ' $c ' not defined in config!") if $CONSTREQ;
     return;
 }
 
-##
+###
 # Collections are global, Reason for this is that any number of subsequent files parsed,
 # might contain properties that overwrite previous existing ones. 
 # Or require ones that don't includes, expecting thm to be there.
@@ -347,21 +358,214 @@ sub template { my ($self, $property, %macros) = @_;
 }
 #
 
+#private to parser sub.
+sub doInstruction { my ($self,$e,$t,$v) = @_;
+
+    my $DO_ENABLED = $self->{'DO_ENABLED'};
+    $t = "" if not defined $t;
+
+    if($t eq 'CONST' or $t eq 'CONSTANT'){#Single constant with mulit-line value;
+
+        $v =~ s/^\s//;        
+        $self->{$e} = $v if not $self->{$e}; # Not allowed to overwrite constant.
+        
+    }
+    elsif($t eq 'VAR' or $t eq 'VARIABLE'){
+
+        $v =~ s/^\s//;        
+        $anons->{$e} = $v;
+        
+    }
+    elsif($t eq 'DATA'){
+        $v=~ s/^\n//; 
+        foreach(split /~\n/,$v){
+            my @a;
+            $_ =~ s/\\`/\\f/g;#We escape to form feed  the found 'escaped' backtick so can be used as text.
+            foreach my $d (split /`/, $_){
+                $d =~ s/\\f/`/g; #escape back form feed to backtick.
+                $d =~ s/~$//; #strip dangling ~ if there was no \n
+                $t = substr $d, 0, 1;
+                if($t eq '$'){
+                    $v =  $d;            #capture specked value.
+                    $d =~ s/\$$|\s*$//g; #trim any space and system or constant '$' end marker.
+                    if($v=~m/\$$/){
+                        $v = $self->{$d}; $v="" if not $v;
+                    }
+                    else{
+                        $v = $d;
+                    }
+                    push @a, $v;
+                }
+                else{                            
+                    if($t =~ /^\#(.*)/) {#First is usually ID a number and also '#' signifies number.
+                        $d = $1;#substr $d, 1;
+                        $d=0 if !$d; #default to 0 if not specified.
+                        push @a, $d
+                    }
+                    else{
+                        push @a, $d;
+                    }
+                }
+            }                   
+
+            my $existing = $self->{'__DATA__'}{$e};
+            if(defined $existing){
+                my @rows = @$existing;
+                push @rows, [@a] if scalar @a >0; 
+                $self->{'__DATA__'}{$e} = \@rows
+            }else{
+                my @rows; push @rows, [@a];            
+                $self->{'__DATA__'}{$e} = \@rows if scalar @a >0;   
+            }
+        }           
+        
+    }elsif($t eq 'FILE'){#@TODO Test case this
+        my ($i,$path,$cnf) = (0,"",$self->{CNF_CONTENT});
+        $v=~s/\s+//g;
+        $path = substr($path, 0, rindex($cnf,'/')) .'/'.$v;
+        push @files, $path;
+        next if !$self->{'$AUTOLOAD_DATA_FILES'};
+        open(my $fh, "<:perlio", $path ) or  CNFParserException->throw("Can't open $path -> $!");
+            read $fh, my $content, -s $fh;
+        close   $fh;
+        my @tags = ($content =~ m/<<(\w*<(.*?).*?>>)/gs);
+        foreach my $tag (@tags){
+            next if not $tag;
+            my @kv = split /</,$tag;
+            $e = $kv[0];
+            $t = $kv[1];
+            $i = index $t, "\n";
+            if($i==-1){
+                $t = $v = substr $t, 0, (rindex $t, ">>");
+            }
+            else{
+                $v = substr $t, $i+1, (rindex $t, ">>")-($i+1);
+                $t = substr $t, 0, $i;
+            }
+            if($t eq 'DATA'){
+                foreach(split /~\n/,$v){
+                    my @a;
+                    $_ =~ s/\\`/\\f/g;#We escape to form feed  the found 'escaped' backtick so can be used as text.
+                    foreach my $d (split(/`/, $_)){
+                        $d =~ s/\\f/`/g; #escape back form feed to backtick.
+                        $t = substr $d, 0, 1;
+                        if($t eq '$'){
+                            $v =  $d;            #capture spected value.
+                            $d =~ s/\$$|\s*$//g; #trim any space and system or constant '$' end marker.
+                            if($v=~m/\$$/){
+                               $v = $self->{$d}; $v="" if not $v;
+                            }
+                            else{
+                                $v = $d;
+                            }
+                            push @a, $v;
+                        }
+                        else{
+                            if($t =~ /^\#(.*)/) {#First is usually ID a number and also '#' signifies number.
+                                $d = $1;#substr $d, 1;
+                                $d=0 if !$d; #default to 0 if not specified.
+                                push @a, $d
+                            }
+                            else{
+                            push @a, $d; 
+                            }                                                
+                        }                                
+                        my $existing = $self->{'__DATA__'}{$e};
+                        if(defined $existing){
+                                my @rows = @$existing;
+                                push @rows, [@a] if scalar @a >0; 
+                                $self->{'__DATA__'}{$e} = \@rows
+                        }else{
+                                my @rows; push @rows, [@a];   
+                                $self->{'__DATA__'}{$e} = \@rows if scalar @a >0;   
+                        }
+                    }   
+                }
+            }       
+        }              
+    }elsif($t eq 'INCLUDE'){
+            $includes{$e} = {loaded=>0,path=>$e,v=>$v};
+    }elsif($t eq 'TREE'){
+        my  $tree = CNFNode->new({'_'=>$e,script=>$v}); 
+            $tree->{DEBUG} = $self->{DEBUG};
+            $instructs{$e} = $tree; 
+    }elsif($t eq 'TABLE'){         # This has now be late bound and send to the CNFSQL package. since v.2.6
+        SQL()->createTable($e,$v) }  # It is hardly been used. But in future itt might change.
+        elsif($t eq 'INDEX'){ SQL()->createIndex($v)}  
+            elsif($t eq 'VIEW'){ SQL()->createView($e,$v)}
+                elsif($t eq 'SQL'){ SQL($e,$v)}
+                    elsif($t eq 'MIGRATE'){SQL()->migrate($e, $v)
+    }
+    elsif($t eq 'DO'){
+        if($DO_ENABLED){
+            ## no critic BuiltinFunctions::ProhibitStringyEval
+            $v = eval $v;
+            ## use critic
+            chomp $v; $anons->{$e} = $v;
+        }else{
+            $self->warn("DO_ENABLED is set to false to process property: $e\n")
+        }
+    }
+    elsif($t eq 'PLUGIN'){ 
+        if($DO_ENABLED){
+            $instructs{$e} = InstructedDataItem -> new($e, 'PLUGIN', $v);                    
+        }else{
+            $self->warn("DO_ENABLED is set to false to process following plugin: $e\n")
+        }                
+    }
+    elsif($t eq 'INSTRUCTOR'){ 
+        if(not $self->registerInstructor($e, $v) && $self->{STRICT}){
+            CNFParserException->throw("Instruction Registration Failed for '<<$e<$t>$v>>'!\t");
+        }
+    }
+    elsif(exists $instructors{$t}){
+        if(not $instructors{$t}->instruct($e, $v) && $self->{STRICT}){
+            CNFParserException->throw("Instruction processing failed for '<<$e<$t>>'!\t");
+        }
+    }
+    elsif($t eq 'MACRO'){                  
+          $instructs{$e}=$v;                  
+    
+    }else{
+        #Register application statement as either an anonymous one. Or since v.1.2 a listing type tag.                 
+        if($e !~ /\$\$$/){ #<- It is not matching {name}$$ here.
+            if($self->{'HAS_EXTENSIONS'}){
+                $anons->{$e} = InstructedDataItem->new($e,$t,$v)
+            }else{
+                $v = $t if not $v; 
+                if($e=~/^\$/){
+                    $self->{$e}  = $v if !$self->{$e}; # Not allowed to overwrite constant.
+                }else{                        
+                    $anons->{$e} = $v
+                }
+            }
+        }
+        else{
+            $e = substr $e, 0, (rindex $e, '$$');
+            # Following is confusing as hell. We look to store in the hash an array reference.
+            # But must convert back and fort via an scalar, since actual arrays returned from an hash are references in perl.
+            my $array = $lists{$e};
+            if(!$array){$array=();$lists{$e} = \@{$array};}
+            push @{$array}, $v;
+        }            
+    }            
+}
 
 ###
 # Parses a CNF file or a text content if specified, for this configuration object.
 ##
 sub parse {  my ($self, $cnf, $content, $del_keys) = @_;
+
     my @tags;
-    my $DO_enabled = $self->{'DO_enabled'};
-    my %instructs;
-    our%includes;
-    my $anons;
     if($self->{'ANONS_ARE_PUBLIC'}){  
        $anons = \%ANONS;
     }else{          
        $anons = $self->{'__ANONS__'};
-    }    
+    } 
+    #private %includes; for now we keep on possible multiple calls to parse.
+    #private instructs on this parse call.
+    %instructs = ();
+
     if(not $content){
         open(my $fh, "<:perlio", $cnf )  or  die "Can't open $cnf -> $!";        
         read $fh, $content, -s $fh;        
@@ -380,39 +584,57 @@ sub parse {  my ($self, $cnf, $content, $del_keys) = @_;
     my $CNF_VER = $1; $CNF_VER="Undefined!" if not $CNF_VER;
     $self->{CNF_VERSION} = $CNF_VER if not defined $self->{CNF_VERSION};
 
-    unlock_hash(%$self);# We control from here the constances, need to unlock them if previous parse was run.
+    # We control from here the constances, need to unlock them if previous parse was run.
+    unlock_hash(%$self);
+
+    my $spc =   $content =~ /\n/ ? '(<{2,3}?)(<*.*?>*)(>{2,3})' : '(<{2,3}?)(<*.*?>*?)(>{2,3})$';
+    @tags   =  ($content =~ m/$spc/gms);    
 
-    @tags =  ($content =~ m/(<<)(<*.*?>*)(>>)/gms);
-    
     foreach my $tag (@tags){             
          next if not $tag;
       next if $tag =~ m/^(>+)|^(<<)/;
-      if($tag=~m/^<CONST/){#constant multiple properties.
-
-            foreach  (split '\n', $tag) {
-                my $k;                
-                my @properties = map {
-                    s/^\s+|\s+$//;  # strip unwanted spaces
-                    s/^\s*["']|['"]\s*$//g;#strip qoutes
-                    s/<CONST\s//; # strip  identifier
-                    s/\s*>$//;
-                    $_          # return the modified string
-                }   split /\s*=\s*/, $_;                
-                foreach (@properties) {
-                      if ($k){
-                            $self->{$k} = $_ if not $self->{$k};
-                            undef $k;
-                      }
-                      else{
-                            $k = $_;
-                      }
-                }
-            }
+      if($tag =~ m/^<(\w*)\s+(.*?)>*$/gs){ # Original fastest and early format: <<<anon value>>>
+           my $p = $1;
+           my $v = $2;
+           if(isReservedWord($self,$p)){
+              my $isVar = ($p eq 'VARIABLE' || $p eq 'VAR');
+              if($p eq 'CONST' or $isVar){ #constant multiple properties.                 
+                    foreach  my $line(split '\n', $v) { 
+                            $line =~ s/^\s+|\s+$//;  # strip unwanted spaces                            
+                            $line =~ s/\s*>$//;
+                            $line =~ m/([\$\w]*)(\s*=\s*)(.*)/g;                            
+                            my $name = $1;
+                               $line = $3;
+                            if(defined $name){
+                                if($isVar){
+                                    $line =~ s/^\s*["']|['"]\s*$//g;#strip qoutes
+                                    $anons ->{$name} = $line if $line
+                                }else{
+                                    if($line and not $self->{$name}){# Not allowed to overwrite constant.
+                                    $line =~ s/^\s*["']|['"]\s*$//g;#strip qoutes
+                                    $self->{$name} = $line; 
+                                    }else{
+                                        warn "Skipping and keeping previously set constance -> [$name] the new value ".
+                                        ($line eq $self->{$name})?"matches it":"dosean't match -> $line."
+                                    }
+                                }
+                            }
+                    }
+              }else{
+                my $t = $p; (m/(\w+)(.*)/s);
+                my $e = $1;
+                $v    = $2;
+                doInstruction($self,$e,$t,$v);
+              }
+           }else{
+              $v =~ s/\s*>$//;
+              $anons->{$p} = $v;
+           }
 
-        }        
-        else{
+        }else{
             #vars are e-element,t-token or instruction,v- for value, vv -array of the lot.
             my ($e,$t,$v,@vv);
+            
             # Check if very old format and don't parse the data for old code compatibility to (still) do it.
             # This is interesting, as a newer format file is expected to use the DATA instruction and final data specified script rules.
             if($CNF_VER eq 'CNF2.2' && $tag =~ m/(\w+)\s*(<\d+>\s)\s*(.*\n)/mg){#It is old DATA format annon
@@ -424,58 +646,50 @@ sub parse {  my ($self, $cnf, $content, $del_keys) = @_;
             }
             # Before mauling into possible value types, let us go for the full expected tag specs first:
             # <<{$sig}{name}<{INSTRUCTION}>{value\n...value\n}>>
-            # Found in -> <https://github.com/wbudic/PerlCNF//CNF_Specs.md>
-            #@vv = ($tag =~ m/(@|[\$@%\W\w]*?)<(\w*)>(.*)/gsm);
-            #@vv = ($tag =~ m/([@%\w\$]*|\w*?)[<>]([@%\w\s\W]*)>*(.*)/gms);
-            @vv = ($tag =~ m/([@%\w\$\.\/]*|\w*?)[<>]([@%\w]*)>*(.*)/gms);
-            $e =$vv[0]; $t=$vv[1]; $v=$vv[2];
-            if(!$RESERVED_WORDS{$t} || @vv!=3){
-                if($tag =~ m/(@|[\$@%\W\w]*)<>(.*)/g){
-                    $e =$1; $v=$2; $t = $v;
-                    $self->warn("Encountered a mauled instruction tag: $tag\n")
-                }else{# Nope!? Let's continue mauling. Life is cruel, that's for sure.
-                    @vv = ($tag =~ m/(@|[\$@%\W\w]*)<([.]*\s*)>*|(.*)>+|(.*)/gsm);
-                    $e = shift @vv;#$e =~ s/^\s*//g;            
-                    if(!$e){
-                        # From now on, parser mauls the tag before making out the value.
-                        @vv = ($tag =~ m/(@|[\$@%]*\w*)(<|>)/g);
-                        $e = shift @vv; 
-                        $t = shift @vv;                    
-                        if(!$e){
-                                if($self->{ENABLE_WARNINGS}){
-                                    $self->warn("Encountered invalid tag formation -> <<$tag>>");
-                                }else{
-                                    die  "Encountered invalid tag formation -> <<$tag>>"
-                                }
-                        }
-                        $v = shift @vv; 
-                    }else{
-                        if($e=~/[@%]/){
-                            $v =~ /^<(.*)>$/gms;    
-                            $v = $1 if $1;                        
-                        }else{
-                            do{ $t = shift @vv; } while( !$t && @vv>0 ); $t =~ s/\s$//;
-                                $v = shift @vv;                                           
-                                if(!$v){
-                                    if(@vv==0 && !$RESERVED_WORDS{$t}){#<- The instruction is assumed to hold the value if it isn't an reserved word.
-                                        $v = $t
-                                    }
-                                    foreach(@vv){#<- Attach any valid fallback from complex rexp.
-                                        $v .= $_ if $_;
-                                    }
-                                }
-                            }                   
-                    }
+            # Found in -> <https://github.com/wbudic/PerlCNF//CNF_Specs.md>  
+            if($tag !~ /\n/ && $tag =~ /^([@%\$\.\/\w]+)\s*([ <>]+)(\w*>)(.*)/) {
+                $e = $1;
+                $t = $2;
+                if($t =~ /^<\s*</){
+                   $v = substr $tag, length($e)+1;
+                   $v =~ s/>$// if $t ne '<<' && $tag =~ />$/
+                }else{
+                    $tag =~ m/([@%\$\.\/\w]+) ([ <>\n|^\\]{1})+ ([^<^>^^\n]+) ([<>]?) (.*)/gmxs;
+                         $t = $3;
+                         $v = $5;
                 }
-            }else{ 
-                $v =~ s/\s>$// ; #Strip if old format of instruction. Pre v.2.5.
+            }else{            
+                                                #############################################################################
+                $tag =~ m/\s*([@%\$\.\/\w]+)\s* # The name.
+                                ([ <>\n])       # begin or close of instruction, where '\n' mark in script as instruction less.
+                                ([^<^>^^\n]+)   # instruction or value of anything
+                                    ([<>\n]?)   # close mark for instuction or is less if \n encountered before.
+                                    (.*)        # actual value is the rest.
+                                       (>$)*    # capture above value up to here from buffer, i.e. if comming from a >>> tag.
+                         /gmxs;                 ###############################################################################
+
+                $e =$1; 
+                if($e eq '@' or $2 eq '<' or ($2 eq '>' and !$4)){
+                $t = $3; 
+                }else{
+                $t = $1;
+                $e = $3 
+                }
+                $v= $5;
+                $v =~ s/>$//m if $4 eq '<' or $6; #value has been crammed into an instruction?
+            
             }
+            if(!$v && !$RESERVED_WORDS{$t}){
+                $v= $t; 
+            }            
+            $v =~ s/\\</</g; $v =~ s/\\>/>/g;# escaped brackets from v.2.8.
+           
             #Do we have an autonumbered instructed list?   
             #DATA best instructions are exempted and differently handled by existing to only one uniquely named property.
             #So its name can't be autonumbered.
             if ($e =~ /(.*?)\$\$$/){    
                 $e = $1;
-                if($t ne 'DATA'){
+                if($t && $t ne 'DATA'){
                    my $array = $lists{$e};
                    if(!$array){$array=();$lists{$e} = \@{$array};}               
                    push @{$array}, InstructedDataItem -> new($e, $t, $v);
@@ -483,10 +697,10 @@ sub parse {  my ($self, $cnf, $content, $del_keys) = @_;
                 }   
             }elsif ($e eq '@'){#collection processing.
                 my $isArray = $t=~ m/^@/;
-                if(!$v && $t =~ m/(.*)>(\s*.*\s*)/gms){
-                    $t = $1;
-                    $v = $2;
-                }               
+                if(!$v && $t =~ m/(.*)>(\s*.*\s*)/gms){
+                    $t = $1;
+                    $v = $2;
+                }               
                 my @lst = ($isArray?split(/[,\n]/, $v):split('\n', $v)); $_="";
                 my @props = map {
                         s/^\s+|\s+$//;   # strip unwanted spaces
@@ -542,184 +756,8 @@ sub parse {  my ($self, $cnf, $content, $del_keys) = @_;
                     $properties{$t}=\%hsh;
                 }
                 next;
-            }              
-
-            if($t eq 'CONST'){#Single constant with mulit-line value;
-
-               $v =~ s/^\s//;
-               #print "[[$t]]=>{$v}\n";
-               $self->{$e} = $v if not $self->{$e}; # Not allowed to overwrite constant.
-               
-            }elsif($t eq 'DATA'){
-               $v=~ s/^\n//; 
-               foreach(split /~\n/,$v){
-                   my @a;
-                   $_ =~ s/\\`/\\f/g;#We escape to form feed  the found 'escaped' backtick so can be used as text.
-                   foreach my $d (split /`/, $_){
-                        $d =~ s/\\f/`/g; #escape back form feed to backtick.
-                        $d =~ s/~$//; #strip dangling ~ if there was no \n
-                        $t = substr $d, 0, 1;
-                        if($t eq '$'){
-                            $v =  $d;            #capture specked value.
-                            $d =~ s/\$$|\s*$//g; #trim any space and system or constant '$' end marker.
-                            if($v=~m/\$$/){
-                                $v = $self->{$d}; $v="" if not $v;
-                            }
-                            else{
-                                $v = $d;
-                            }
-                            push @a, $v;
-                        }
-                        else{                            
-                            if($t =~ /^\#(.*)/) {#First is usually ID a number and also '#' signifies number.
-                                $d = $1;#substr $d, 1;
-                                $d=0 if !$d; #default to 0 if not specified.
-                                push @a, $d
-                            }
-                            else{
-                              push @a, $d;
-                            }
-                        }
-                   }                   
-                   
-                   my $existing = $self->{'__DATA__'}{$e};
-                   if(defined $existing){
-                        my @rows = @$existing;
-                        push @rows, [@a] if scalar @a >0; 
-                        $self->{'__DATA__'}{$e} = \@rows
-                   }else{
-                        my @rows; push @rows, [@a];   
-                       $self->{'__DATA__'}{$e} = \@rows if scalar @a >0;   
-                   }
-               }           
-                
-            }elsif($t eq 'FILE'){
-                my ($i,$path) = $cnf;
-                $v=~s/\s+//g;
-                $path = substr($path, 0, rindex($cnf,'/')) .'/'.$v;
-                push @files, $path;
-                next if !$self->{'$AUTOLOAD_DATA_FILES'};
-                open(my $fh, "<:perlio", $path ) or  CNFParserException->throw("Can't open $path -> $!");
-                   read $fh, $content, -s $fh;
-                close   $fh;
-                my @tags = ($content =~ m/<<(\w*<(.*?).*?>>)/gs);
-                foreach my $tag (@tags){
-                    next if not $tag;
-                    my @kv = split /</,$tag;
-                    $e = $kv[0];
-                    $t = $kv[1];
-                    $i = index $t, "\n";
-                    if($i==-1){
-                        $t = $v = substr $t, 0, (rindex $t, ">>");
-                    }
-                    else{
-                        $v = substr $t, $i+1, (rindex $t, ">>")-($i+1);
-                        $t = substr $t, 0, $i;
-                    }
-                    if($t eq 'DATA'){
-                        foreach(split /~\n/,$v){
-                            my @a;
-                            $_ =~ s/\\`/\\f/g;#We escape to form feed  the found 'escaped' backtick so can be used as text.
-                            foreach my $d (split(/`/, $_)){
-                                $d =~ s/\\f/`/g; #escape back form feed to backtick.
-                                $t = substr $d, 0, 1;
-                                if($t eq '$'){
-                                    $v =  $d;            #capture spected value.
-                                    $d =~ s/\$$|\s*$//g; #trim any space and system or constant '$' end marker.
-                                    if($v=~m/\$$/){
-                                        $v = $self->{$d}; $v="" if not $v;
-                                    }
-                                    else{
-                                        $v = $d;
-                                    }
-                                    push @a, $v;
-                                }
-                                else{
-                                    if($t =~ /^\#(.*)/) {#First is usually ID a number and also '#' signifies number.
-                                        $d = $1;#substr $d, 1;
-                                        $d=0 if !$d; #default to 0 if not specified.
-                                        push @a, $d
-                                    }
-                                    else{
-                                    push @a, $d; 
-                                    }                                                
-                                }                                
-                                my $existing = $self->{'__DATA__'}{$e};
-                                if(defined $existing){
-                                        my @rows = @$existing;
-                                        push @rows, [@a] if scalar @a >0; 
-                                        $self->{'__DATA__'}{$e} = \@rows
-                                }else{
-                                        my @rows; push @rows, [@a];   
-                                        $self->{'__DATA__'}{$e} = \@rows if scalar @a >0;   
-                                }
-                            }   
-                        }
-                    }       
-                }              
-            }elsif($t eq 'INCLUDE'){
-                   $includes{$e} = {loaded=>0,path=>$e,v=>$v};
-            }elsif($t eq 'TREE'){
-               my  $tree = CNFNode->new({'_'=>$e,script=>$v}); 
-                   $tree->{DEBUG} = $self->{DEBUG};
-                   $instructs{$e} = $tree; 
-
-            }elsif($t eq 'TABLE'){         # This has now be late bound and send to the CNFSQL package. since v.2.6
-               SQL()->createTable($e,$v) }  # It is hardly been used. But in future itt might change.
-                elsif($t eq 'INDEX'){ SQL()->createIndex($v)}  
-                   elsif($t eq 'VIEW'){ SQL()->createView($e,$v)}
-                      elsif($t eq 'SQL'){ SQL($e,$v)}
-                         elsif($t eq 'MIGRATE'){SQL()->migrate($e, $v)
-            }
-            elsif($t eq 'DO'){
-                if($DO_enabled){
-                    ## no critic BuiltinFunctions::ProhibitStringyEval
-                    $v = eval $v;
-                    ## use critic
-                    chomp $v; $anons->{$e} = $v;
-                }else{
-                    $self->warn("Do_enabled is set to false to process property: $e\n")
-                }
-            }
-            elsif($t eq 'PLUGIN'){ 
-                if($DO_enabled){
-                    $instructs{$e} = InstructedDataItem -> new($e, 'PLUGIN', $v);                    
-                }else{
-                    $self->warn("Do_enabled is set to false to process following plugin: $e\n")
-                }                
-            }
-            elsif($t eq 'INSTRUCTOR'){ 
-                if(not $self->registerInstructor($e, $v) && $self->{STRICT}){
-                   CNFParserException->throw("Instruction Registration Failed for '<<$e<$t>$v>>'!\t");
-                }
-            }
-            elsif(exists $instructors{$t}){
-                if(not $instructors{$t}->instruct($e, $v) && $self->{STRICT}){
-                   CNFParserException->throw("Instruction processing failed for '<<$e<$t>>'!\t");
-                }
-            }
-            elsif($t eq 'MACRO'){                  
-                  $instructs{$e}=$v;                  
             }
-            else{
-                #Register application statement as either an anonymous one. Or since v.1.2 an listing type tag.                 
-                if($e !~ /\$\$$/){ #<- It is not matching {name}$$ here.
-                   $v = $t if not $v; 
-                    if($e=~/^\$/){
-                        $self->{$e} = $v if !$self->{$e}; # Not allowed to overwrite constant.
-                    }else{                        
-                        $anons->{$e} = $v
-                    }
-                }
-                else{
-                    $e = substr $e, 0, (rindex $e, '$$');
-                    # Following is confusing as hell. We look to store in the hash an array reference.
-                    # But must convert back and fort via an scalar, since actual arrays returned from an hash are references in perl.
-                    my $array = $lists{$e};
-                    if(!$array){$array=();$lists{$e} = \@{$array};}
-                    push @{$array}, $v;
-                }            
-            }            
+            doInstruction($self,$e,$t,$v)
         }
        }
     #Do smart instructions and property linking.
@@ -749,7 +787,7 @@ sub parse {  my ($self, $cnf, $content, $del_keys) = @_;
         my @del;
         for my $idx(0..$#ditms) {
             my $struct = $ditms[$idx];
-            my $type =  ref($struct);             
+            my $type =  ref($struct); 
             if($type eq 'CNFNode' && ($struct->{'script'} =~ s/_HAS_PROCESSING_PRIORITY_//si)){ # This will within trim out the flag if found.
                $struct->validate($struct->{'script'}) if $self->{ENABLE_WARNINGS};
                $anons->{$struct->{'_'}} = $struct->process($self, $struct->{'script'});
@@ -772,9 +810,9 @@ sub parse {  my ($self, $cnf, $content, $del_keys) = @_;
                 my $t = $struct->{ins};
                 if($t eq 'PLUGIN'){ 
                    instructPlugin($self,$struct,$anons);
-                }
-                push @del, $idx; 
             }
+                push @del, $idx; 
+        }
         }
         while(@del){
             splice @ditms,pop @del, 1
@@ -808,8 +846,8 @@ sub parse {  my ($self, $cnf, $content, $del_keys) = @_;
               }              
             }else{
                  CNFParserException->throw("Can't open ".$file->{path}." -> $!") if $self->{STRICT};
-                 $file->{loaded} = 1;
-                 $self->error("Include not available -> ".$file->{path})
+                 $file->{loaded} = 0;
+                 $self->error("Script include not available -> ".$file->{path})
             }
         }
     }    
@@ -826,11 +864,11 @@ sub instructPlugin {
         $properties{$struct->{'ele'}} = doPlugin($self, $struct, $anons);
         $self->log("Plugin instructed ->". $struct->{'ele'});
     }catch($e){ 
-            if($self->{STRICT}){
-                CNFParserException->throw(error=>$e, show_trace=>1);
-            }else{
-                $self->trace("Error @ Plugin -> ". $struct->toString() ." Error-> $@")                                 
-            }
+        if($self->{STRICT}){
+            CNFParserException->throw(error=>$e, show_trace=>1);
+        }else{
+            $self->trace("Error @ Plugin -> ". $struct->toString() ." Error-> $@")                                 
+        }
     }
 }
 
@@ -917,8 +955,8 @@ sub doPlugin {
         }else{
            $obj = $pck->new();
         }        
-        my $res = $obj->$sub($self, $prp);
-        if($res){  
+        my $res = $obj-> $sub($self, $prp);
+        if($res){            
             $plugin->setPlugin($obj);
             return $plugin;
         }else{
@@ -1098,6 +1136,7 @@ __END__
    2. Reserved instructions can't be used for future custom ones, and also not recommended tag or property names.
    3. Current Reserved words list is.
        - CONST    - Concentrated list of constances, or individaly tagged name and its value.
+       - VARIABLE - Concentrated list of anons, or individaly tagged name and its value.
        - DATA     - CNF scripted delimited data property, having uniform table data rows.       
        - FILE     - CNF scripted delimited data property is in a separate file.
        - %LOG     - Log settings property, i.e. enabled=1, console=1.
diff --git a/htdocs/cgi-bin/system/modules/HTMLIndexProcessorPlugin.pm b/htdocs/cgi-bin/system/modules/HTMLIndexProcessorPlugin.pm
new file mode 100644 (file)
index 0000000..96c90dd
--- /dev/null
@@ -0,0 +1,248 @@
+package HTMLIndexProcessorPlugin;
+
+use strict;
+use warnings;
+use Syntax::Keyword::Try;
+use Exception::Class ('HTMLIndexProcessorPluginException');
+use feature qw(signatures);
+use Scalar::Util qw(looks_like_number);
+use Date::Manip;
+
+use CGI;
+use CGI::Session '-ip_match';
+
+our $TAB = ' 'x4;
+
+sub new ($class, $fields={Language=>'English',DateFormat=>'US'}){      
+
+    if(ref($fields) eq 'REF'){
+       warn "Hash reference required as argument for fields!"
+    }
+    my $lang =   $fields->{'Language'};
+    my $frmt =   $fields->{'DateFormat'};
+    Date_Init("Language=$lang","DateFormat=$frmt");    
+   
+    return bless $fields, $class
+}
+
+###
+# Process config data to contain expected fields and data.
+###
+sub convert ($self, $parser, $property) {    
+    my ($buffer,$title, $link, $body_attrs, $body_on_load, $give_me);
+    my $cgi          = CGI -> new();
+    my $cgi_action   = $cgi-> param('action');    
+    my $cgi_doc      = $cgi-> param('doc');
+    my $tree         = $parser-> anon($property);
+    die "Tree property '$property' is not available!" if(!$tree or ref($tree) ne 'CNFNode');    
+
+try{
+    if ($cgi_action and $cgi_action eq 'load'){
+        $buffer  = $cgi->header(expires => "+0s", -charset => "UTF-8");
+        $buffer .= $cgi->start_html();
+        $buffer .= ${loadDocument($parser, $cgi_doc)} 
+    }else{
+        if (exists $parser->{'HTTP_HEADER'}){            
+            $buffer .= $parser-> {'HTTP_HEADER'};
+        }else{ 
+            if(exists $parser -> collections()->{'%HTTP_HEADER'}){
+                my %http_hdr = $parser -> collection('%HTTP_HEADER');
+                $buffer = $cgi->header(%http_hdr);
+            }
+        }
+        $title  = $tree  -> {'Title'} if exists $tree->{'Title'};
+        $link   = $tree  -> {'HEADER'};
+        $body_attrs   = $tree -> {'Body'} if exists $tree -> {'Body'};
+        $body_on_load = $tree -> {'OnLoad'} if exists $tree -> {'OnLoad'};
+        $body_on_load = "onBodyLoadGeneric()" if !$body_on_load;
+        my (@hhshCSS,@hhshJS);
+        if($link){
+        if(ref($link) eq 'CNFNode'){
+                my $arr = $link->find('CSS/@@');
+                foreach (@$arr){                
+                    push  @hhshCSS, {-type => 'text/css', -src => $_->val()};                
+                }
+                $arr = $link->find('JS/@@');
+                foreach (@$arr){                
+                    push  @hhshJS, {-type => 'text/javascript', -src => $_->val()};                
+                } 
+                my $ps = $link  -> find('STYLE');
+                $give_me .= "\n<style>\n".$ps -> val()."\n</style>\n"  if $ps; 
+                $ps = $link  -> find('SCRIPT');
+                $give_me .="\n<script>\n".$ps -> val()."\n</script>\n" if $ps;            
+        }       
+        delete $tree -> {'HEADER'};       
+        }    
+        $buffer .= $cgi->start_html(
+                            -title   => $title,
+                            -onload  => $body_on_load,
+                            # -BGCOLOR => $colBG,                        
+                            -style   => \@hhshCSS,
+                            -script  => \@hhshJS,
+                            -head=>$give_me,
+                            $body_attrs
+                        );
+        foreach my $node($tree->nodes()){      
+        $buffer .= build($parser, $node)  if $node;
+        }
+        $buffer .= $cgi->end_html();
+    }
+    $parser->data()->{$property} = \$buffer;
+ }catch($e){
+         HTMLIndexProcessorPluginException->throw(error=>$e ,show_trace=>1);
+ }
+}
+#
+sub loadDocument($parser, $doc) {
+    my $slurp = do {
+                    open my $fh, '<:encoding(UTF-8)', $doc or HTMLIndexProcessorPluginException->throw("Document not avaliable: $doc");
+                    local $/;
+                    <$fh>;       
+    };
+    if($doc =~/\.md$/){
+        require MarkdownPlugin;   
+        my @r = @{MarkdownPlugin->new()->parse($slurp)};
+        return $r[0];
+    }
+    return \$slurp        
+}
+
+###
+# Builds the html version out of a CNFNode.
+# CNFNode with specific tags here are converted also here, 
+# those that are out of the scope for normal standard HTML tags.
+# i.e. HTML doesn't have row and cell tags. Neither has meta links syntax.
+###
+sub build {
+    my $parser = shift;
+    my $node = shift;
+    my $tabs = shift; $tabs = 0 if !$tabs;
+    my $bf;
+    my $name = lc $node->name();
+    if(isParagraphName($name)){
+        $bf .= "\t"x$tabs."<div".placeAttributes($node).">\n"."\t"x$tabs."<div>";
+            foreach my $n($node->nodes()){
+                if($n->{'_'} ne '#'){
+                    my $b = build($parser, $n, $tabs+1);     
+                    $bf .= "$b\n" if $b;
+                }
+            }
+            if($node->{'#'}){
+                my $v = $node->val();
+                $v =~ s/\n\n+/\<\/br>\n/gs;
+                $bf .= "\t<div>\n\t<p>\n".$v."</p>\n\t</div>\n"; 
+            }
+        $bf .= "\t</div>\t</div>\n"
+    }elsif( $name eq 'row' || $name eq 'cell' ){
+        $bf .=  "\t"x$tabs."<div class=\"$name\"".placeAttributes($node).">\n";
+            foreach my $n($node->nodes()){
+                if($n->{'_'} ne '#'){
+                    my $b = build($parser,$n,$tabs+1);
+                    $bf .= "$b\n" if $b;
+                }
+            }
+        $bf .= $node->val()."\n" if $node->{'#'};   
+        $bf .= "\t"x$tabs."</div>"
+    }elsif( $name eq 'img' ){
+        $bf .= "\t\t<img".placeAttributes($node)."/>\n";
+    }elsif($name eq 'list_images'){
+        my $paths = $node->{'@@'};
+        foreach my $ndp (@$paths){            
+            my $path = $ndp -> val();
+            my @ext = split(',',"jpg,jpeg,png,gif");
+            my $exp = " ".$path."/*.". join (" ".$path."/*.", @ext);
+            my @images = glob($exp);
+            $bf .= "\t<div class='row'><div class='cell'><b>Directory: $path</b></div></div>";
+            foreach my $file(@images){
+                ($file=~/.*\/(.*)$/);
+                my $fn = $1;
+                my $enc = "img@".ShortLink::obtain($file);
+                $bf .= qq(\t<div class='row'><div class='cell'>);
+                $bf .= qq(\t<a href="$enc"><img src="$enc" with='120' height='120'><br>$fn</a>\n</div></div>\n);
+            }
+        }    
+    }elsif($name eq '!'){
+      return "<!--".$node->val()."-->\n";
+        
+    }elsif($node->{'*'}){ #Links are already captured, in future this might be needed as a relink from here for dynamic stuff?
+            my $lval = $node->{'*'};
+            if($name eq 'file_list_html'){ #Special case where html links are provided.                
+                foreach(split(/\n/,$lval)){
+                     $bf .= qq( [ $_ ] |) if $_
+                }
+                $bf =~ s/\|$//g;
+            }else{ #Generic included link value.
+                #is there property data for it?
+                my $prop = $parser->data()->{$node->name()};                
+                #if not has it been passed as an page constance?
+                $prop = $parser -> {$node->name()} if !$prop; 
+                if ( !$prop ) {
+                    if   ( $parser->{STRICT} ) { die "Not found as property link -> " . $node->name()}
+                    else                       { warn "Not found as property link -> " . $node->name()}
+                }
+                if($prop){
+                    my $ref = ref($prop);
+                    if($ref eq "SCALAR"){
+                        $bf .= $$prop;
+                    }else{
+                        $bf .= $prop;
+                    }
+                }else{
+                    $bf .= $lval;
+                }
+            }
+    }
+    else{
+        my $spaced = 1;
+           $bf .= "\t"x$tabs."<".$node->name().placeAttributes($node).">";            
+            foreach my $n($node->nodes()){                
+                    my $b = build($parser, $n,$tabs+1);                    
+                        if ($b){                            
+                            if($b =~/\n/){
+                               $bf =~ s/\n$//gs;
+                               $bf .= "\n$b\n"
+                            }else{
+                               $spaced=0;                               
+                               $bf .= $b; 
+                            }
+                       }                    
+            }
+        
+        if ($node->{'#'}){
+            $bf .= $node->val();
+            $bf .= "</".$node->name().">";
+        }else{
+            $bf .= "\t"x$tabs if $spaced;
+            $bf .= "</".$node->name().">";
+            $bf .= "\n" if !$spaced;
+        }
+
+    }
+           $bf =~ s/\n\n/\n/gs;
+    return $bf;
+}
+#
+
+
+sub placeAttributes {
+    my $node = shift;
+    my $ret  = "";
+    my @attr = $node -> attributes();
+    foreach (@attr){
+        if(@$_[0] ne '#' && @$_[0] ne '_'){
+           if(@$_[1]){
+              $ret .= " ".@$_[0]."=\"".@$_[1]."\"";
+           }else{ 
+              $ret .= " ".@$_[0]." ";
+           }
+        }
+    }
+    return $ret;
+}
+
+sub isParagraphName {
+    my $name = shift;
+    return $name eq 'p' || $name eq 'paragraph' ? 1 : 0
+}
+
+1;
\ No newline at end of file
index 46cf16edde81a876b32a876e229d8cd284e932c4..74129cd2d7218cc7458af15e84d31b20fc2d1237 100644 (file)
@@ -27,9 +27,16 @@ sub new ($class, $fields={Language=>'English',DateFormat=>'US'}){
 ###
 sub convert ($self, $parser, $property) {    
 try{    
-    my $script =  $parser->anon($property);
-    die "Property not found [$property]!" if !$script;
-    if($script !~ /\n/ and -e $script ){
+    my ($item, $script) =  $parser->anon($property);
+    die "Property not found [$property]!" if !$item;
+
+    my $ref = ref($item); my $escaped = 0;
+    if($ref eq 'CNFNode'){
+       $script = $item->{script}  
+    }elsif($ref eq 'InstructedDataItem'){
+       $script = $item->{val};
+       $escaped = $item->{ins} eq 'ESCAPED'
+    }elsif($script !~ /\n/ and -e $script ){
         my $file = $parser->anon($property);
         $script = do {
         open my $fh, '<:encoding(UTF-8)', $script or MarkdownPluginException->throw("File not avaliable: $script");
@@ -37,23 +44,27 @@ try{
         <$fh>;    
         };
     }
+    if($escaped){        
+        $script =~ s/\\</</gs;
+        $script =~ s/\\>/>/gs;
+        #$script =~ s/\n/<br>/gs;
+    }
     my @doc = @{parse($self,$script)};
     $parser->data()->{$property} =  $doc[0];
     $parser->data()->{$property.'_headings'} = $doc[1];
    
-}catch{
-        MarkdownPluginException->throw(error=>$@ ,show_trace=>1);
+}catch($e){
+        MarkdownPluginException->throw(error=>$e ,show_trace=>1);
 }}
 
 
 
 sub parse ($self, $script){
-
+try{
     my ($buffer, $para, $ol, $lnc); 
     my @list; my $ltype=0;  my $nix=0;my $nplen=0;
-    my @titels;
-    $script =~ s/^\s*|\s*$//;
-    my $code = 0; my $tag;
+    my @titels;my $code = 0; my $tag;  my $pml_val = 0;  my $bqoute;my $bqoute_nested;
+    $script =~ s/^\s*|\s*$//;    
     foreach my $ln(split(/\n/,$script)){        
         $ln =~ s/\t/$TAB/gs;  
         $lnc++;
@@ -61,8 +72,16 @@ sub parse ($self, $script){
             my $class = $1;         
             if($1){
                $tag = $1;
-               $tag = 'div' if($tag eq 'html');
-               $tag = 'div' if($tag eq 'code');
+               if($tag eq 'html' or $tag eq 'CNF' or $tag eq 'code' or $tag eq 'perl'){
+                  $class = $tag;
+                  $tag = 'div';
+               }else{
+                  $tag = 'pre' if($tag eq 'sh' or $tag eq 'bash');
+               }
+               if($tag eq 'perl'){
+                  $class='perl'; 
+                  $tag  ='div';                                   
+               }
             }elsif(!$tag){
                $tag = $class = 'pre';
             }
@@ -70,9 +89,19 @@ sub parse ($self, $script){
                if($para){ 
                   $buffer .= "$para\n"
                }
-               $buffer .= "</$tag>"; $code =0; $tag = $para = "";
+               $buffer .= "</$tag><br>"; $tag = $para = "";
+               $code = 0;
             }else{
-               $buffer .= "<$tag class='$class'>"; $code = 1;
+               $buffer .= "<$tag class='$class'>"; 
+               if($class eq 'perl'){
+                  $buffer .= qq(<h1><span>$class</span></h1>);
+                  $code = 2;
+                }else{
+                  if($class eq 'CNF' or $class eq 'html'){
+                     $buffer .= qq(<h1><span>$class</span></h1>);
+                  }
+                  $code = 1
+                }
             }
         }elsif(!$code && $ln =~ /^\s*(#+)\s*(.*)/){
             my $h = 'h'.length($1);
@@ -100,9 +129,25 @@ sub parse ($self, $script){
                 $arr[@arr] = $ltype .'|'.$val;
                 $list[@list] = \@arr;
             }            
-        }elsif(!$code && $ln =~ /^\s+\</ ){
-            $ln =~ s/^\s*\<//;
-            $para .= ${style($ln)}." ";            
+        }elsif(!$code && $ln =~ /(^|\\G)[ ]{0,3}(>+) ?/){
+            my $nested = length($2);
+            $ln =~ s/^\s*\>+//;
+            if(!$bqoute_nested){
+                $bqoute_nested = $nested;
+                $bqoute .="<blockquote><p>\n"
+            }elsif($bqoute_nested<$nested){
+                $bqoute .="</p><blockquote><p>";
+                $bqoute_nested = $nested;
+            }elsif($bqoute_nested>$nested){
+                $bqoute .="</p></blockquote><p>";
+                $bqoute_nested--;
+            }
+            if($ln !~ /(.+)/gm){
+               $bqoute .= "\n</p><p>\n"
+            }else{
+               $bqoute .= ${style($ln)}."</br>";
+            }
+            
         }
         elsif(!$code && $ln =~ /^\s*\*\*\*/){
             if($para){
@@ -114,17 +159,72 @@ sub parse ($self, $script){
         elsif($ln =~ /^\s*(.*)/ && length($1)>0){
             if($code){
                  my $v=$1;
-                if($tag eq 'pre'){
+                if($tag eq 'pre' && $code == 1){
                     $v =~ s/</&#60;/g;
                     $v =~ s/>/&#62;/g;
                     $para .= "$v\n"; 
-                }else{                   
-                    $v =~ s/<<(\w+)(<)/<span class="bra">&#60;&#60;<\/span><span class="key">$1<\/span><span class="bra">&#60;<\/span>/g;
-                    $v =~ s/>>/<span class="bra">&#62;&#62;<\/span>/g;
+                }elsif($code == 2){
+                    $v =~ s/([,;=\(\)\{\}\[\]]|->)/<span class=opr>$1<\/span>/g;
+                    $v =~ s/(['"].*['"])/<span class='str'>$1<\/span>/g;
+                    $v =~ s/class=opr/class='opr'/g;
+                    $v =~ s/(my|our|local|use|lib|require|new|while|for|foreach|while|if|else|elsif)/<span class='bra'>$1<\/span>/g;                    
+                    $v =~ s/(\$\w+)/<span class='inst'>$1<\/span>/g;                    
                     $para .= "$v<br>\n";
+                }else{                   
+                    
+                    $v =~ m/ ^(<<)  ([@%]<) ([\$@%]?\w+) ([<>])
+                            |^(<{2,3})                          
+                                ([\$@%\w]+)
+                                      (<[\w\ ]*>)* 
+                            |(>{2,3})$
+                           /gx;# and my @captured = @{^CAPTURE};
+
+                    if($5&&$6&&$7){
+                        my $t = $5;
+                        my $v = $6;
+                        my $i = $7;
+                        $i =~ m/^<([\$@%\w]+?)>$/;
+                        $i = $1; $pml_val = 1;                       
+                        $para .= qq(<span class='bra'>&#60;&#60;</span><span class='var'>$v</span><span class='bra'>&#60;</span><span class='inst'>$i</span><span class='bra'>&#62;</span><br>);
+                       
+                    }elsif($5&&$6){
+                         my $t = $5;
+                         my $i = $6;
+                         $t =~ s/</&#60;/g; $pml_val = 1;
+                        $para .= qq(<span class='bra'>$t</span><span class='inst'>$i</span><br>
+                                );
+
+                    }elsif($1 && $2 && $3){
+                        
+                        $pml_val = 1;
+                        $para .= qq(<span class='bra'>&#60;&#60;$2<\/span><span class='var'>$3</span><span class='bra'>&#62;<\/span><br>);
+
+                       
+                    }elsif($8){
+                        my $t = $8; 
+                        $t =~ s/>/&#62;/g;  $pml_val = 0;
+                        $para .= "<span class='bra'>$t</span><br>\n";
+                    }
+                    else{
+                        if($pml_val){
+                            $v =~ m/(.*)([=:])(.*)/gs;
+                            if($1&&$2&&$3){
+                                $para .= "<span class='var'>$1</span> <span class='bra'>$2</span> <span class='val'>$3</span> <br>\n";
+                            }else{
+                                $para .= " <span class='val'>$v</span><br>\n";
+                            }
+                        }else{
+                            $para .= "$v<br>\n";
+                        }
+                    }
                 }
                 
             }else{
+                if($bqoute){
+                    while($bqoute_nested-->0){$bqoute .="</p></blockqoute>\n"}
+                    $para   .= $bqoute;
+                    undef $bqoute;
+                }
                 $para .= ${style($1)}."\n"         
             }
         }else{            
@@ -156,11 +256,19 @@ sub parse ($self, $script){
             }
         }
     }
+
+    if($bqoute){
+        while($bqoute_nested-->0){$bqoute .="\n</p></blockquote>\n"}
+        $buffer .= $bqoute;        
+    }
+
     $buffer .= createList(0,$ltype,\@list) if(@list);
     $buffer .= qq(<p>$para</p>\n) if $para;    
 
 return [\$buffer,\@titels]
-}
+}catch($e){
+        MarkdownPluginException->throw(error=>$e ,show_trace=>1);
+}}
 
 my @LIST_ITEM_TYPE = ('ol','ul','blockquote');
 
@@ -206,7 +314,7 @@ sub get_list_type (@list){
 }
 
 sub style ($script){
-    MarkdownPluginException->throw("Invalid argument!") if !$script;
+    MarkdownPluginException->throw(error=>"Invalid argument passed as script!",show_trace=>1) if !$script;
     #Links <https://duckduckgo.com>
     $script =~ s/<(http[:\/\w.]*)>/<a href=\"$1\">$1<\/a>/g;
         
@@ -220,7 +328,7 @@ sub style ($script){
     
     my $ret = join(' ',@result);    
     #Images
-    $ret =~ s/!\[(.*)\]\((.*)\)/\<img class="md_img" src=\"$2\"\>$1\<\/img\>/;
+    $ret =~ s/!\[(.*)\]\((.*)\)/\<div class="div_img"><img class="md_img" src=\"$2\"\ alt=\"$1\"\/><\/div>/;
     #Links [Duck Duck Go](https://duckduckgo.com)
     $ret =~ s/\[(.*)\]\((.*)\)/\<a href=\"$2\"\>$1\<\/a\>/;
     return \$ret;
index 1fa05d9a9fe86bd6d19cd65f307b94c72c5b7abe..e1adb468ba642adc6870c74b063680682ea60fe4 100644 (file)
@@ -1,6 +1,5 @@
 body{
-    font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Bookman,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;
-    font-size: 14px;
+    font-family: Segoe UI,Helvetica,Bookman,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;
     background-image: url('images/page-bck-std.png');
     margin: 0; 
     padding:0;  
@@ -8,7 +7,7 @@ body{
 p {
     font-family: Bookman;
     margin-left: 70px;
-    font-weight: bold;
+    font-weight: normal;    
 }
 pre{
     color: #070707;
@@ -19,17 +18,14 @@ pre{
 }
 table,
 th,
-td {
-    font-family: Bookman;
+td {    
     border-collapse: collapse;
     padding: 5px;
     margin: auto;
 }
 
-div {
-    font-family: Bookman;
-    text-align: center;
-    vertical-align: middle;
+div {    
+    text-align: center;    
 }
 
 #div_log {
@@ -93,7 +89,7 @@ th,
 }
 
 #cat_lst {
-    visibility: hidden;
+    visibility: hidden; 
 }
 
 .r0 {
@@ -304,6 +300,7 @@ img {
 
 #btnRTF {
     float: right;
+    
 }
 
 .midnight{
@@ -315,7 +312,6 @@ a:link {
 a:visited {
  color: #472f80;
 }
-
 a:hover {
     color: #ff4d21;
     font-style:normal;
index 3e916834533cd5c46cb8b5806664d6a5f8ef98a1..a3ffb199fc727b5e4da104cf8d0cf5238f8903bb 100644 (file)
@@ -160,15 +160,6 @@ function onBodyLoad(toggle, locale, tz, today, expires, rs_cur, log_limit) {
         showTimeout: 100
     });
 
-    $(window).scroll(function() {
-        if (!MNU_SCROLLING) {
-            $('#floating_menu').fadeOut(2000, function() {
-                $('#floating_menu').show();
-                MNU_SCROLLING = false;
-            });
-            MNU_SCROLLING = true;
-        }
-    });
     $("#menu_close").poshytip({
         className: 'tip-yellowsimple',
         showOn: 'focus',
@@ -184,13 +175,11 @@ function onBodyLoad(toggle, locale, tz, today, expires, rs_cur, log_limit) {
         })
     });
 
-//     $("#log_submit").click(encodeText);
 
     $('#ec').show();
 
     $("#RTF").prop("checked", false);
-    // $('#tbl_doc').toggle();
-    // $('#toolbar-container').toggle();
+    
     if ($('#editor-container').length) {        
         QUILL = new Quill('#editor-container', {
             placeholder: 'Enter your Document here...',