_html.tcl
Go to the documentation of this file.00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 global textMap;
00011     textMap =  {
00012     &    &    <    <     >    >       
00013     \xa0     \xb0 °    \xc0 À \xd0 Ð    \xe0 à \xf0 ð
00014     \xa1 ¡  \xb1 ± \xc1 Á \xd1 Ñ \xe1 á \xf1 ñ
00015     \xa2 ¢   \xb2 ²   \xc2 Â  \xd2 Ò \xe2 â  \xf2 ò
00016     \xa3 £  \xb3 ³   \xc3 Ã \xd3 Ó \xe3 ã \xf3 ó
00017     \xa4 ¤ \xb4 ´  \xc4 Ä   \xd4 Ô  \xe4 ä   \xf4 ô
00018     \xa5 ¥    \xb5 µ  \xc5 Å  \xd5 Õ \xe5 å  \xf5 õ
00019     \xa6 ¦ \xb6 ¶   \xc6 Æ  \xd6 Ö   \xe6 æ  \xf6 ö
00020     \xa7 §   \xb7 · \xc7 Ç \xd7 ×  \xe7 ç \xf7 ÷
00021     \xa8 ¨    \xb8 ¸  \xc8 È \xd8 Ø \xe8 è \xf8 ø
00022     \xa9 ©   \xb9 ¹   \xc9 É \xd9 Ù \xe9 é \xf9 ù
00023     \xaa ª   \xba º   \xca Ê  \xda Ú \xea ê  \xfa ú
00024     \xab «  \xbb »  \xcb Ë   \xdb Û  \xeb ë   \xfb û
00025     \xac ¬    \xbc ¼ \xcc Ì \xdc Ü   \xec ì \xfc ü
00026     \xad ­    \xbd ½ \xcd Í \xdd Ý \xed í \xfd ý
00027     \xae ®    \xbe ¾ \xce Î  \xde Þ  \xee î  \xfe þ
00028     \xaf &hibar;  \xbf ¿ \xcf Ï   \xdf ß  \xef ï   \xff ÿ
00029     {"} "
00030 } ; /*  " make the emacs highlighting code happy.*/
00031 
00032 
00033 
00034 
00035 
00036 
00037 
00038 
00039 
00040 
00041 global   markupMap
00042       markupMap =  { {&} {\1&}  {<} {\1<}  {>} {\1>} {"} {\1"} } 
00043 global   finalMap
00044       finalMap =  $textMap
00045 lappend  finalMap {\1&} {&}  {\1<} {<}  {\1>} {>} {\1"} {"}
00046 
00047 
00048 ret  htmlEscape (type text) {
00049     global textMap
00050     return [string map $textMap $text]
00051 }
00052 
00053 ret  fmt_postprocess (type text)    {
00054     global finalMap
00055     return [string map $finalMap $text]
00056 }
00057 
00058 
00059 
00060 
00061 
00062 ret  markup (type text) {
00063     global markupMap
00064     return [string map $markupMap $text]
00065 }
00066 
00067 ret  use_bg () {
00068     set c [bgcolor]
00069     #puts stderr "using $c"
00070     if {$c == {}} {return ""}
00071     return bgcolor=$c
00072 }
00073 
00074 
00075 ret  nbsp   ()         {return [markup " "]}
00076 ret  p      ()         {return [markup <p>]}
00077 ret  ptop   ()         {return [markup "<p valign=top>"]}
00078 ret  td     ()         {return [markup "<td [use_bg]>"]}
00079 ret  trtop  ()         {return [markup "<tr valign=top [use_bg]>"]}
00080 ret  tr     ()         {return [markup "<tr            [use_bg]>"]}
00081 ret  sect   (type s)        {return [markup "<b>$s</b><br><hr>"]}
00082 ret  link   (type text , type url) {return [markup "<a href=\"$url\">$text</a>"]}
00083 ret  table  ()         {return [markup "<table [border] width=100% cellspacing=0 cellpadding=0>"]}
00084 ret  btable ()         {return [markup "<table border=1 width=100% cellspacing=0 cellpadding=0>"]}
00085 ret  stable ()         {return [markup "<table [border] cellspacing=0 cellpadding=0>"]}
00086 
00087 
00088 ret  tcl_cmd (type cmd) {return "[markup <b>]\[$cmd][markup </b>]"}
00089 ret  wget    (type url) {exec /usr/bin/wget -q -O - $url 2>/dev/null}
00090 
00091 ret  url (type tag , type text , type url) {
00092     set body {
00093     switch -exact -- $what {
00094         link {return {\1<a href="%url%"\1>%text%\1</a\1>}} ; ## TODO - markup
00095         text {return {%text%}}
00096         url  {return {%url%}}
00097     }
00098     }
00099     proc $tag {{what link}} [string map [list %text% $text %url% $url] $body]
00100 }
00101 
00102 ret  img (type tag , type alt , type img) {
00103     proc $tag {} [list return "\1<img alt=\"$alt\" src=\"$img\"\1>"]
00104 }
00105 
00106 ret  protect (type text) {return [string map [list & "&" < "<" > ">"] $text]}
00107 
00108 
00109 ret  tag  (type t) {return [markup <$t>]}
00110 ret  taga (type t , type av) {
00111     # av = attribute value ...
00112     set avt [list]
00113     foreach {a v} $av {lappend avt "$a=\"$v\""}
00114     return [markup "<$t [join $avt]>"]
00115 }
00116 ret  tag/ (type t) {return [markup </$t>]}
00117 ret  tag_ (type t , type block , type args) {
00118     # args = key value ...
00119     if {$args == {}} {return "[tag $t]$block[tag/ $t]"}
00120     return "[taga $t $args]$block[tag/ $t]"
00121 }
00122 
00123 
00124 ret  ht_comment (type text)   {return "[markup <]! -- [join [split $text \n] "   -- "]\n   --[markup >]"}
00125 
00126 
00127 
00128 
00129 ret  wrap (type content , type gi) {
00130     return "[tag $gi]${content}[tag/ $gi]"
00131 }
00132 ret  startTag (type x , type args) {if {[llength $args]} {taga $x $args} else {tag $x}}
00133 ret  endTag   (type x) {tag/ $x}
00134