File: toc.html

package info (click to toggle)
tcllib 1.18-dfsg-3
  • links: PTS
  • area: main
  • in suites: stretch
  • size: 64,304 kB
  • ctags: 28,857
  • sloc: tcl: 174,135; ansic: 14,215; sh: 2,643; xml: 1,766; yacc: 1,148; pascal: 583; makefile: 106; perl: 84; f90: 84; python: 33; ruby: 13; php: 11
file content (129 lines) | stat: -rw-r--r-- 3,651 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# -*- tcl -*-
#
# $Id: toc.html,v 1.6 2005/09/28 04:51:19 andreas_kupries Exp $
#
# Engine to convert a doctoc document into HTML.
#
# Copyright (c) 2003 Andreas Kupries <andreas_kupries@sourceforge.net>
# Freely redistributable.
#
######################################################################

dt_source _toc_common.tcl
dt_source _html.tcl

######################################################################
# Conversion specification.
#
# One-pass processing.

rename toc_postprocess {}
rename fmt_postprocess toc_postprocess

proc fmt_plain_text {text} {return {}}

################################################################
## Backend for TMML markup

global firstitem   ; set firstitem   1
global maintable   ; set maintable   1
global even        ; set even        1

proc fmt_toc_begin     {label title}      {
    set hdr ""
    if {![Get raw]} {
	append  hdr "[markup <html><head>]\n"
	append  hdr "[markup <title>] $label [markup </title>]\n"

	# Engine parameter - insert 'meta'
	if {[set meta [Get meta]] != {}} {append hdr [markup $meta]\n}

	append  hdr "[markup </head>]\n"
	append  hdr [ht_comment [c_provenance]]\n
	append  hdr [ht_comment "$label"]\n
	append  hdr \n
	append  hdr [markup <body>]\n
    }
    
    # Engine parameter - insert 'header'
    if {[set header [Get header]] != {}} {
	lappend map @TITLE@ $label
	set header [string map $map $header]
	append hdr [markup $header]\n
    }

    append  hdr "[markup <h3>] $label [markup </h3>]\n"
    append  hdr "[markup <hr><dl><dt><h2>] $title [markup </h2><dd>]\n"
    return $hdr
}
proc fmt_toc_end       {}           {
    global maintable
    set text "\n"
    if {$maintable} {append text [tag/ table]\n}

    # Engine parameter - insert 'footer'
    set footer [Get footer]
    if {$footer != {}} {set footer \n[markup ${footer}]\n}

    append text [tag /dl][tag hr]${footer}

    if {![Get raw]} {
	append text [tag/ body][tag/ html]\n
    }
    return $text
}
proc fmt_division_start {title symfile} {
    global maintable ; set maintable 0

    if {$symfile == ""} {
	return \n[markup <dl><dt>]$title[markup <dd>]
    } else {
	return \n[markup <dl><dt>][markup "<a href=\"[dt_fmap $symfile]\">"]$title[markup </a><dd>]
    }
}
proc fmt_division_end   {}           {
    global firstitem ; set firstitem 1
    global even      ; set even 1
    return [markup </table></dl>]
}
proc fmt_item          {file label desc} {
    global firstitem even
    set text ""

    if {$firstitem} {
	set firstitem 0
	append text \n[markup "<table class=\"#doctools_toc\">"]\n
    }

    if {$even} {
	append text [markup "<tr class=\"#doctools_toceven\" >"]\n
    } else {
	append text [markup "<tr class=\"#doctools_tocodd\"  >"]\n
    }
    set even [expr {1-$even}]
    append text [markup "<td class=\"#doctools_tocleft\" >"][markup "<a href=\"[dt_fmap $file]\">"]$label[tag/ a][tag/ td]\n
    append text [markup "<td class=\"#doctools_tocright\">"]${desc}[tag /td]\n
    append text [tag/ tr]\n
    return $text
}
proc fmt_comment       {text}       {ht_comment $text}

################################################################

global    __var
array set __var {
    meta   {}
    header {}
    footer {}
    raw    0
}
proc Get               {varname}      {global __var ; return $__var($varname)}
proc toc_listvariables {}             {global __var ; return [array names __var]}
proc toc_varset        {varname text} {
    global __var
    if {![info exists __var($varname)]} {return -code error "Unknown engine variable \"$varname\""}
    set __var($varname) $text
    return
}

################################################################