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
}
|