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