File: fileindex.ll

package info (click to toggle)
lifelines 3.0.50-2
  • links: PTS
  • area: main
  • in suites: etch-m68k
  • size: 11,140 kB
  • ctags: 6,517
  • sloc: ansic: 57,468; xml: 8,014; sh: 4,255; makefile: 848; yacc: 601; perl: 170; sed: 16
file content (236 lines) | stat: -rw-r--r-- 7,291 bytes parent folder | download | duplicates (5)
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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
/*
 * @progname       fileindex.ll
 * @version        1999
 * @author         Dennis Nicklaus
 * @category       
 * @output         HTML
 * @description

   I have lines on indi's in my database which look like:
   1 NOTE FILE: BIOGRAPHY $FAMHIST/matthews/alkire.bio
   or maybe OBITUARY, MARRIAGE, WILL, NEWS ... instead of BIOGRAPHY.
   and the lowercase letters (matthews/alkire.bio in this example)
   will change to reflect the location of the file in question.

   The purpose of this report is to make an index for these files.
   Each entry looks something like:
   <a href=momI83.html> ALKIRE, James Denton</a>  : <a href=matthews_alkire_bio.txt> matthews_alkire_bio</a> <br>
   referencing my page for the individual and the file which has the article
   in it. (I had to change the file naming scheme from my local disk to the
   place where I have my files served to the WWW (geocities used to not allow
   subdirectories).

   The files are grouped by type (e.g. BIO, OBIT, ...) and then
   are sorted alphabetically by the individual's surname within each grouping.

   Probably not generally useful to anyone else, but shows one thing
   that can be done.  
*/



proc main()
{
   indiset(obitset)
   indiset(marrset)
   indiset(otherset)
   indiset(bioset)
   indiset(willset)

   table(obittab)
   table(marrtab)
   table(othertab)
   table(biotab)
   table(willtab)


   print("patience please, you have a lot of data\n")
    forindi (person, pnum) {
      fornotes(inode(person),note){
	set (i, index(note,"FILE:",1))
	if (gt(i,0)){


	/*   Get the filename. lifted from html.dn */

		set(what,save(substring(note,add(i,6),strlen(note))))
		set (i, index(what," ",1))
		set(descrip,save(substring(what,1,i)))

		/* now get and flatten the file name */
		set (i, index(what,"FAMHIST/",1))
		set (fname,save(substring(what,add(i,strlen("FAMHIST/")),strlen(what))))o
		set (slash, index(fname,"/",1))
		while (gt(slash,0)){
		set(fnameb,save(concat(concat(substring(fname,1,sub(slash,1)),"_"),
					substring(fname,add(slash,1),strlen(fname)))))
			set(fname,fnameb)
			set (slash, index(fname,"/",1))
		}
		set (slash, index(fname,".",1))
		while (gt(slash,0)){
			set(fnameb,save(concat(concat(substring(fname,1,sub(slash,1)),"_"),
						substring(fname,add(slash,1),strlen(fname)))))
			set(fname,fnameb)
			set (slash, index(fname,".",1))
		}
	/* filename is now complete except for adding .txt on the end of it */



	/* now figure out which table things go in */

  	  set (i, index(note,"OBITUARY",1))
	  if (gt(i,0)){
	    addtoset(obitset,person,0)
 	    list(temp)
	    if (lookup(obittab, key(person))){
		set(temp,lookup(obittab, key(person)))
	    	enqueue(temp,fname)
	    } else {
	    	enqueue(temp,fname)
	    }
	    insert(obittab, save(key(person)), temp)
          }
  	  set (j, index(note,"MARRIAGE",1))
	  if (gt(j,0)){
	    addtoset(marrset,person,0)
 	    list(temp)
	    if (lookup(marrtab, key(person))){
		set(temp,lookup(marrtab, key(person)))
	    	enqueue(temp,fname)
	    } else {
	    	enqueue(temp,fname)
	    }
	    insert(marrtab, save(key(person)), temp)
          }
  	  set (k, add(index(note,"BIOGRAPHY",1),index(note,"HISTORY",1)))
	  if (gt(k,0)){
	    addtoset(bioset,person,0)
 	    list(temp)
	    if (lookup(biotab, key(person))){
		set(temp,lookup(biotab, key(person)))
	    	enqueue(temp,fname)
	    } else {
	    	enqueue(temp,fname)
	    }
	    insert(biotab, save(key(person)), temp)
          }
  	  set (m, index(note,"WILL",1))
	  if (gt(m,0)){
	    addtoset(willset,person,0)
 	    list(temp)
	    if (lookup(willtab, key(person))){
		set(temp,lookup(willtab, key(person)))
	    	enqueue(temp,fname)
	    } else {
	    	enqueue(temp,fname)
	    }
	    insert(willtab, save(key(person)), temp)
          }
	  if (eq(add(add(add(i,j),k),m),0)){
	    addtoset(otherset,person,0)
 	    list(temp)
	    if (lookup(othertab, key(person))){
		set(temp,lookup(othertab, key(person)))
	    	enqueue(temp,fname)
	    } else {
	    	enqueue(temp,fname)
	    }
	    insert(othertab, save(key(person)), temp)
          }
        }
      }
    }
    /* now sort and print things out */
   print("uniquing\n")
/*    uniqueset(obitset)
    uniqueset(marrset)
    uniqueset(otherset)
    uniqueset(bioset)*/
   print("sorting\n")
    namesort(obitset)
    namesort(marrset)
    namesort(otherset)
    namesort(bioset)
    namesort(willset)
       print("printing\n")
    call intro()
    "<center>                                 Have Obituaries for :</center><br>\n"
    forindiset(obitset,person,i,j) {
	call nameout(person)
 	forlist(lookup(obittab, key(person)),newfile,n){
  	  " : <a href=" newfile ".txt> " newfile "</a> "
	}
	"<br>\n"
    }
    "<center>                       Have marriage articles for :</center><br>\n"
    forindiset(marrset,person,i,j) {
	call nameout(person)
 	forlist(lookup(marrtab, key(person)),newfile,n){
  	  " : <a href=" newfile ".txt> " newfile "</a> "
	}
	"<br>\n"
    }
    "<center>                Have Biographical or historical articles for :</center><br>\n"
    forindiset(bioset,person,i,j) {
	call nameout(person) 
 	forlist(lookup(biotab, key(person)),newfile,n){
  	  " : <a href=" newfile ".txt> " newfile "</a> "
	}
	"<br>\n"
    }
    "<center>                             Have Wills for :</center><br>\n"
    forindiset(willset,person,i,j) {
	call nameout(person)
 	forlist(lookup(willtab, key(person)),newfile,n){
  	  " : <a href=" newfile ".txt> " newfile "</a> "
	}
	"<br>\n"
    }
    "<center>                                 Have Other info for :</center><br>\n"
    forindiset(otherset,person,i,j) {
	call nameout(person)
 	forlist(lookup(othertab, key(person)),newfile,n){
  	  " : <a href=" newfile ".txt> " newfile "</a> "
	}
	"<br>\n"
    }
   call end()   
}

proc nameout(person)
{
	"<a href=" database() key(person) ".html> "
	fullname(person,1,0,999)
	"</a> "
}
proc intro()
{
    set(db_owner, getproperty("user.fullname"))
    set(owner_email, concat("mailto:",getproperty("user.email")))
 "<html>\n"
 "<title>" db_owner " Genealogy Article Index</title>\n"
 "<META NAME=\"keywords\" CONTENT=\"genealogy, obituary, index\" >\n"
 "<center> <h1>Family Article Index</h1></center>\n"
 "<center> <a href=\"" owner_email "\">" db_owner " " owner_email "</a><br></center>\n"
 "<p>\n"
 "This is an index of the various obituaries, biographies, wedding announcements, \n"
 "wills, etc. that I have, sorted into those categories.  Selecting the name\n"
 "of the person will take you to that person's page.  Following the person's\n"
 "name is a filename or list of filenames which are the articles for that person.\n"
 "Selecting the article filename will take you directly to it.\n"
 "<p> Some of the persons on this list may not have a personal page if they are \n"
 "of a generation not included here, or if they are only related to me by marriage.\n"
 "But the article should still be present.\n"
 "So if you click on a person and don't go anywhere interesting, it's OK.\n"
 "But let me know if any of the article links are invalid.\n"
 "<hr><p>"
}
proc end()
{
"<center><b>\n"
"This page hosted by <a href=\"/\"><img src=/pictures/gc_icon.gif align=middle alt=\"GeoCities\" border=0></a>\n"
"Get your own <a href=\"/\">Free Home Page</a></b></center>\n"
"<br><br>\n"
}