File: HelpIndexBuild.tcl

package info (click to toggle)
roleplaying 2.0-8
  • links: PTS
  • area: main
  • in suites: woody
  • size: 16,620 kB
  • ctags: 1,039
  • sloc: tcl: 7,155; cpp: 2,709; ansic: 2,227; makefile: 559; sh: 330; csh: 3
file content (79 lines) | stat: -rw-r--r-- 2,544 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
#* 
#* ------------------------------------------------------------------
#* Role PlayingDB V2.0 by Deepwoods Software
#* ------------------------------------------------------------------
#* HelpIndexBuild.tcl - Help Index Builder
#* Created by Robert Heller on Tue Apr 20 00:56:13 1999
#* ------------------------------------------------------------------
#* Modification History: 
#* $Log$
#* ------------------------------------------------------------------
#* Contents:
#* ------------------------------------------------------------------
#*  
#*     Role Playing DB -- A database package that creates and maintains
#* 		       a database of RPG characters, monsters, treasures,
#* 		       spells, and playing environments.
#* 
#*     Copyright (C) 1995,1998,1999  Robert Heller D/B/A Deepwoods Software
#* 			51 Locke Hill Road
#* 			Wendell, MA 01379-9728
#* 
#*     This program is free software; you can redistribute it and/or modify
#*     it under the terms of the GNU General Public License as published by
#*     the Free Software Foundation; either version 2 of the License, or
#*     (at your option) any later version.
#* 
#*     This program is distributed in the hope that it will be useful,
#*     but WITHOUT ANY WARRANTY; without even the implied warranty of
#*     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#*     GNU General Public License for more details.
#* 
#*     You should have received a copy of the GNU General Public License
#*     along with this program; if not, write to the Free Software
#*     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#* 
#*  
#* 

global HLinePattern
set HLinePattern {^([0-9]+)[ 	](.*)$}

global argc argv
if {$argc < 2} {
  error "Missing args!"
}

if {[catch [list open [lindex $argv 0] w] indexfp]} {
  error "open: [lindex $argv 0]: $indexfp"
}

for {set i 1} {$i < $argc} {incr i} {
  set file [lindex $argv $i]
  if {[catch [list open $file r] hfp]} {
    puts stderr "Warning: open $file: $hfp"
    puts stderr "Skiping: $file"
    continue
  }
  set prefixList {}
  set pos [tell $hfp]
  while {[gets $hfp line] >= 0} {
    global HLinePattern
    if {[regexp "$HLinePattern" "$line" whole level heading] > 0} {
      if {$level < [llength $prefixList]} {
	if {$level == 0} {
	  set prefixList {}
        } else {
	  set prefixList [lrange $prefixList 0 [expr $level -1]]
	}
      }
      lappend prefixList "$heading"
      puts $indexfp [list [join $prefixList {>}] [list $file $pos]]
    }
    set pos [tell $hfp]
  }
  close $hfp
}