1# -*- tcl -*- 2# 3# $Id: toc.html,v 1.6 2005/09/28 04:51:19 andreas_kupries Exp $ 4# 5# Engine to convert a doctoc document into HTML. 6# 7# Copyright (c) 2003 Andreas Kupries <andreas_kupries@sourceforge.net> 8# Freely redistributable. 9# 10###################################################################### 11 12dt_source _toc_common.tcl 13dt_source _html.tcl 14 15###################################################################### 16# Conversion specification. 17# 18# One-pass processing. 19 20rename toc_postprocess {} 21rename fmt_postprocess toc_postprocess 22 23proc fmt_plain_text {text} {return {}} 24 25################################################################ 26## Backend for TMML markup 27 28global firstitem ; set firstitem 1 29global maintable ; set maintable 1 30global even ; set even 1 31 32proc fmt_toc_begin {label title} { 33 set hdr "" 34 append hdr "[markup <html><head>]\n" 35 append hdr "[markup <title>] $label [markup </title>]\n" 36 37 # Engine parameter - insert 'meta' 38 if {[set meta [Get meta]] != {}} {append hdr [markup $meta]\n} 39 40 append hdr "[markup </head>]\n" 41 append hdr [ht_comment [c_provenance]]\n 42 append hdr [ht_comment "CVS: \$Id\$ $label"]\n 43 append hdr \n 44 append hdr [markup <body>]\n 45 46 # Engine parameter - insert 'header' 47 if {[set header [Get header]] != {}} {append hdr [markup $header]\n} 48 49 append hdr "[markup <h3>] $label [markup </h3>]\n" 50 append hdr "[markup <hr><dl><dt><h2>] $title [markup </h2><dd>]\n" 51 return $hdr 52} 53proc fmt_toc_end {} { 54 global maintable 55 set text "\n" 56 if {$maintable} {append text [tag/ table]\n} 57 58 # Engine parameter - insert 'footer' 59 set footer [Get footer] 60 if {$footer != {}} {set footer \n[markup ${footer}]\n} 61 62 return $text[tag /dl][tag hr]${footer}[tag/ body][tag/ html]\n 63} 64proc fmt_division_start {title symfile} { 65 global maintable ; set maintable 0 66 67 if {$symfile == ""} { 68 return \n[markup <dl><dt>]$title[markup <dd>] 69 } else { 70 return \n[markup <dl><dt>][markup "<a href=\"[dt_fmap $symfile]\">"]$title[markup </a><dd>] 71 } 72} 73proc fmt_division_end {} { 74 global firstitem ; set firstitem 1 75 global even ; set even 1 76 return [markup </table></dl>] 77} 78proc fmt_item {file label desc} { 79 global firstitem even 80 set text "" 81 82 if {$firstitem} { 83 set firstitem 0 84 append text \n[markup "<table class=\"#toc\">"]\n 85 } 86 87 if {$even} { 88 append text [markup "<tr class=\"#toceven\" >"]\n 89 } else { 90 append text [markup "<tr class=\"#tocodd\" >"]\n 91 } 92 set even [expr {1-$even}] 93 append text [markup "<td class=\"#tocleft\" >"][markup "<a href=\"[dt_fmap $file]\">"]$label[tag/ a][tag/ td]\n 94 append text [markup "<td class=\"#tocright\">"]${desc}[tag /td]\n 95 append text [tag/ tr]\n 96 return $text 97} 98proc fmt_comment {text} {ht_comment $text} 99 100################################################################ 101 102global __var 103array set __var { 104 meta {} 105 header {} 106 footer {} 107} 108proc Get {varname} {global __var ; return $__var($varname)} 109proc toc_listvariables {} {global __var ; return [array names __var]} 110proc toc_varset {varname text} { 111 global __var 112 if {![info exists __var($varname)]} {return -code error "Unknown engine variable \"$varname\""} 113 set __var($varname) $text 114 return 115} 116 117################################################################ 118