mirror of
https://github.com/kennethreitz/context.git
synced 2026-06-05 23:00:17 +00:00
77 lines
2.4 KiB
LLVM
77 lines
2.4 KiB
LLVM
/*
|
|
* @progname browser.ll
|
|
* @version 1.0
|
|
* @author Prinke
|
|
* @category
|
|
* @output onscreen
|
|
* @description
|
|
|
|
browsing via all kinds of links, especially in non-standard
|
|
or experimental GEDCOM structures
|
|
|
|
browser.ll v.1.0 Rafal T. Prinke -- 19 APR 1997 -- rafalp@hum.amu.edu.pl
|
|
|
|
*/
|
|
|
|
|
|
proc main()
|
|
{
|
|
list(back)
|
|
list(backhdr)
|
|
getindi(p, "Person to start with: ")
|
|
if(not(p)) { break() }
|
|
set(i, savenode(root(p)))
|
|
set(hdr, concat("*** INDI: ", name(p,0)," ***"))
|
|
set(bh, "----- BACK")
|
|
while(i) {
|
|
list(mnu)
|
|
list(gto)
|
|
enqueue(gto,0)
|
|
enqueue(gto,0)
|
|
enqueue(mnu,"----- STOP")
|
|
enqueue(mnu,bh)
|
|
|
|
traverse (i, node, x) {
|
|
if (reference(value(node))) {
|
|
set (n, dereference(value(node)))
|
|
enqueue(gto, savenode(n))
|
|
|
|
if(eq(substring(value(node),1,2),"@I")) {
|
|
set(show,concat("INDI: ", name(indi(value(node)),0))) }
|
|
elsif(eq(substring(value(node),1,2),"@S")) {
|
|
set(show,concat("SOUR: ", value(child(n)) )) }
|
|
elsif(eq(substring(value(node),1,2),"@E")) {
|
|
set(show,concat("EVEN: ", value(child(n)) )) }
|
|
elsif(eq(substring(value(node),1,2),"@F")) {
|
|
set(show,concat("FAM: ", name(husband(fam(value(node))),0),
|
|
" & ", name(wife(fam(value(node))),0))) }
|
|
else { set(show, concat("OTHER:",value(child(node)))) }
|
|
|
|
enqueue(mnu, show)
|
|
}
|
|
}
|
|
set(why, menuchoose(mnu, hdr))
|
|
|
|
if(eq(why, 1)) { break() }
|
|
|
|
elsif(eq(why, 2)) {
|
|
if(empty(back)) {
|
|
set(bh, "-- THIS IS THE FIRST RECORD - CAN'T GO BACK --")
|
|
push(back, savenode(i))
|
|
push(backhdr, hdr)
|
|
}
|
|
set(i, pop(back))
|
|
set(hdr, pop(backhdr))
|
|
}
|
|
else {
|
|
push(back, savenode(i))
|
|
push(backhdr, hdr)
|
|
set(nd, getel(gto, why))
|
|
set(hdr, concat("*** ",getel(mnu, why)," ***"))
|
|
set(i, nd)
|
|
set(bh, "----- BACK")
|
|
|
|
}
|
|
}
|
|
}
|