_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