os/persistentdata/persistentstorage/sqlite3api/TEST/TCL/tcldistribution/tools/man2help.tcl
author sl
Tue, 10 Jun 2014 14:32:02 +0200 (2014-06-10)
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
sl@0
     1
# man2help.tcl --
sl@0
     2
#
sl@0
     3
# This file defines procedures that work in conjunction with the
sl@0
     4
# man2tcl program to generate a Windows help file from Tcl manual
sl@0
     5
# entries.
sl@0
     6
#
sl@0
     7
# Copyright (c) 1996 by Sun Microsystems, Inc.
sl@0
     8
#
sl@0
     9
# RCS: @(#) $Id: man2help.tcl,v 1.13.2.1 2003/06/04 23:41:15 mistachkin Exp $
sl@0
    10
# 
sl@0
    11
sl@0
    12
#
sl@0
    13
# PASS 1
sl@0
    14
#
sl@0
    15
sl@0
    16
set man2tclprog [file join [file dirname [info script]] man2tcl.exe]
sl@0
    17
sl@0
    18
proc generateContents {basename version files} {
sl@0
    19
    global curID topics
sl@0
    20
    set curID 0
sl@0
    21
    foreach f $files {
sl@0
    22
	puts "Pass 1 -- $f"
sl@0
    23
	flush stdout
sl@0
    24
	doFile $f
sl@0
    25
    }
sl@0
    26
    set fd [open [file join [file dirname [info script]] $basename$version.cnt] w]
sl@0
    27
    fconfigure $fd -translation crlf
sl@0
    28
    puts $fd ":Base $basename$version.hlp"
sl@0
    29
    foreach package [getPackages] {
sl@0
    30
	foreach section [getSections $package] {
sl@0
    31
            if {![info exists lastSection]} {
sl@0
    32
                set lastSection {}
sl@0
    33
            }
sl@0
    34
            if {[string compare $lastSection $section]} {
sl@0
    35
                puts $fd "1 $section"
sl@0
    36
            }
sl@0
    37
            set lastSection $section
sl@0
    38
	    set lastTopic {}
sl@0
    39
	    foreach topic [getTopics $package $section] {
sl@0
    40
		if {[string compare $lastTopic $topic]} {
sl@0
    41
		    set id $topics($package,$section,$topic) 
sl@0
    42
		    puts $fd "2 $topic=$id"
sl@0
    43
		    set lastTopic $topic
sl@0
    44
		}
sl@0
    45
	    }
sl@0
    46
	}
sl@0
    47
    }
sl@0
    48
    close $fd
sl@0
    49
}
sl@0
    50
sl@0
    51
sl@0
    52
#
sl@0
    53
# PASS 2
sl@0
    54
#
sl@0
    55
sl@0
    56
proc generateHelp {basename files} {
sl@0
    57
    global curID topics keywords file id_keywords
sl@0
    58
    set curID 0
sl@0
    59
sl@0
    60
    foreach key [array names keywords] {
sl@0
    61
	foreach id $keywords($key) {
sl@0
    62
	    lappend id_keywords($id) $key
sl@0
    63
	}
sl@0
    64
    }
sl@0
    65
sl@0
    66
    set file [open [file join [file dirname [info script]] $basename.rtf] w]
sl@0
    67
    fconfigure $file -translation crlf
sl@0
    68
    puts $file "\{\\rtf1\\ansi \\deff0\\deflang1033\{\\fonttbl\{\\f0\\froman\\fcharset0\\fprq2 Times New Roman\;\}\{\\f1\\fmodern\\fcharset0\\fprq1 Courier New\;\}\}"
sl@0
    69
    foreach f $files {
sl@0
    70
	puts "Pass 2 -- $f"
sl@0
    71
	flush stdout
sl@0
    72
	initGlobals
sl@0
    73
	doFile $f
sl@0
    74
	pageBreak
sl@0
    75
    }
sl@0
    76
    puts $file "\}"
sl@0
    77
    close $file
sl@0
    78
}
sl@0
    79
sl@0
    80
# doFile --
sl@0
    81
#
sl@0
    82
# Given a file as argument, translate the file to a tcl script and
sl@0
    83
# evaluate it.
sl@0
    84
#
sl@0
    85
# Arguments:
sl@0
    86
# file -		Name of file to translate.
sl@0
    87
sl@0
    88
proc doFile {file} {
sl@0
    89
    global man2tclprog
sl@0
    90
    if {[catch {eval [exec $man2tclprog [glob $file]]} msg]} {
sl@0
    91
	global errorInfo
sl@0
    92
	puts stderr $msg
sl@0
    93
	puts "in"
sl@0
    94
	puts $errorInfo
sl@0
    95
	exit 1
sl@0
    96
    }
sl@0
    97
}
sl@0
    98
sl@0
    99
# doDir --
sl@0
   100
#
sl@0
   101
# Given a directory as argument, translate all the man pages in
sl@0
   102
# that directory.
sl@0
   103
#
sl@0
   104
# Arguments:
sl@0
   105
# dir -			Name of the directory.
sl@0
   106
sl@0
   107
proc doDir dir {
sl@0
   108
    puts "Generating man pages for $dir..."
sl@0
   109
    foreach f [lsort [glob -directory $dir "*.\[13n\]"]] {
sl@0
   110
	doFile $f
sl@0
   111
    }
sl@0
   112
}
sl@0
   113
sl@0
   114
# process command line arguments
sl@0
   115
sl@0
   116
if {$argc < 3} {
sl@0
   117
    puts stderr "usage: $argv0 \[options\] projectName version manFiles..."
sl@0
   118
    exit 1
sl@0
   119
}
sl@0
   120
sl@0
   121
set arg 0
sl@0
   122
sl@0
   123
if {![string compare [lindex $argv $arg] "-bitmap"]} {
sl@0
   124
    set bitmap [lindex $argv [incr arg]]
sl@0
   125
    incr arg
sl@0
   126
}
sl@0
   127
set baseName [lindex $argv $arg]
sl@0
   128
set version [lindex $argv [incr arg]]
sl@0
   129
set files {}
sl@0
   130
foreach i [lrange $argv [incr arg] end] {
sl@0
   131
    set i [file join $i]
sl@0
   132
    if {[file isdir $i]} {
sl@0
   133
	foreach f [lsort [glob -directory $i "*.\[13n\]"]] {
sl@0
   134
	    lappend files $f
sl@0
   135
	}
sl@0
   136
    } elseif {[file exists $i]} {
sl@0
   137
	lappend files $i
sl@0
   138
    }
sl@0
   139
}
sl@0
   140
source [file join [file dirname [info script]] index.tcl]
sl@0
   141
generateContents $baseName $version $files
sl@0
   142
source [file join [file dirname [info script]] man2help2.tcl]
sl@0
   143
generateHelp $baseName $files