1# -*- tcl -*- 2# rules/manpage-html 3# 4# (c) 2001 Andreas Kupries <andreas_kupries@sourceforge.net> 5# 6# [expand] definitions to convert a tcl based manpage definition into 7# a manpage based upon HTML markup. Additional definition files allow 8# the conversion into nroff and XML. 9# 10# This conversion is for standalone manpages ... 11# 12################################################################ 13 14proc here {} [list return [file dirname [info script]]] 15 16source [file join [here] manpage.api] ; # api, defines all required commands with errors. 17source [file join [here] trf] ; # site pages policy and trf configuration 18 19proc state {} [list return [file join [file dirname [state]] .. htdocs state]] 20 21# Called before the first pass 22proc init_hook {} {setpasses 2} 23 24# Called before the first output. 25proc begin_hook {} { 26 # Reset the syn flag 27 global state 28 set state(syn) 0 29 set state(req) 0 30 return 31} 32 33# Called after the last output. 34proc end_hook {} {} 35 36################################################################ 37## Backend for *roff markup 38 39 40proc manpage_begin {command section version} { 41 global __command ; set __command $command 42 global __section ; set __section $section 43 global __version ; set __version $version 44 45 set hdr "" 46 append hdr "[ht_comment {}]\n" 47 append hdr "[ht_comment "CVS: \$Id\$ $command.$section"]\n" 48 append hdr "[ht_comment {}]\n" 49 append hdr [page_begin trf/mp/$command][nav_link [trf/sf/txt]]<br>[site_xref]<br>[mp_xref] 50 append hdr [page_content] 51 return $hdr 52} 53 54##proc moddesc {module} {} 55proc moddesc {shortdesc} { 56 global __command 57 global __section 58 global __version 59 return "<hr><h2> $shortdesc $__version -- [string trimleft $__command :]($__section)</h2>\n" 60} 61proc titledesc {description} { 62 global __command 63 set hdr "" 64 append hdr "[section NAME]\n" 65 append hdr "[para] $__command - $description" 66 return $hdr 67} 68 69proc copyright {args} {} 70proc comment {args} {} 71 72proc manpage_end {} {return [page_end]} 73 74proc section {name} {return "<h2>$name</h2>"} 75proc para {} {return <p>} 76 77global state 78array set state {req 0 syn 0 call {}} 79 80proc require {pkg {version {}}} { 81 global state 82 set state(req) 1 83 set result "[x_synopsis]package require <b>$pkg" 84 if {$version != {}} { 85 append result " $version" 86 } 87 append result "</b><br>\n" 88 return $result 89} 90 91proc call {cmd args} { 92 global state 93 if {[exppass] == 1} { 94 set oldcolor [bgcolor] 95 proc bgcolor {} {return lightyellow} 96 append state(call) "[trtop][td]$cmd [join $args " "]</td></tr>\n" 97 proc bgcolor {} [list return $oldcolor] 98 } 99 return "[lst_item "$cmd [join $args " "]"]" 100} 101 102proc description {} { 103 global state 104 105 set result "" 106 if {$state(call) != {}} { 107 append result [x_synopsis] 108 if {$state(req)} {append result <br>} 109 append result [btable][tr][td][table]$state(call)</table></td></tr></table>\n 110 } 111 append result [section DESCRIPTION] 112 113 return $result 114} 115 116proc x_synopsis {} { 117 global state 118 if {!$state(syn)} { 119 global oldcolor 120 set state(syn) 1 121 return [section SYNOPSIS]\n 122 } else { 123 return "" 124 } 125} 126 127################################################################ 128 129global list_state 130array set list_state {level -1} 131 132proc list_begin {what} { 133 global list_state 134 135 switch -exact -- $what { 136 enum {set result <ol>} 137 bullet {set result <ul>} 138 definitions {set result <dl>} 139 default {return -code error "Unknown list type $what"} 140 } 141 142 incr list_state(level) 143 set list_state(l,$list_state(level)) $what 144 145 return $result 146} 147 148proc list_end {} { 149 global list_state 150 151 set what $list_state(l,$list_state(level)) 152 catch {unset list_state(l,$list_state(level))} 153 154 incr list_state(level) -1 155 156 switch -exact -- $what { 157 enum {set result </ol>} 158 bullet {set result </ul>} 159 definitions {set result </dl>} 160 } 161 return $result 162} 163 164proc lst_item {text} {return <dt>$text<dd>} 165proc bullet {} {return <li>} 166proc enum {} {return <li>} 167 168################################################################ 169 170proc see_also {args} {return "[section {SEE ALSO}]\n[join $args ", "]"} 171proc keywords {args} {return "[section KEYWORDS]\n[join $args ", "]"} 172 173proc nl {} {return <br>} 174proc arg {text} {return <i>$text</i>} 175proc cmd {text} {return <b>$text</b>} 176proc emph {text} {return <i>$text</i>} 177proc strong {text} {return <b>$text</b>} 178proc opt {text} {return ?$text?} 179 180################################################################ 181# HTML specific commands 182 183proc ht_comment {text} {return "<! -- $text -->"} 184 185################################################################ 186 187proc setx {v string} { 188 upvar $v _ 189 set _ $string 190 return 191} 192 193proc appendx {v string} { 194 upvar $v _ 195 append _ $string 196 return 197} 198 199################################################################ 200