mirror of
https://github.com/kennethreitz/context.git
synced 2026-06-05 14:50:19 +00:00
122 lines
2.6 KiB
Plaintext
122 lines
2.6 KiB
Plaintext
/*
|
|
* @progname ldsgedcom.li
|
|
* @version 1.2 of 2004-07-03
|
|
* @author Vincent Broman (vpbroman@mstar2.net)
|
|
* @category
|
|
* @output gedcom event and string function values
|
|
* @description
|
|
*
|
|
* Utility functions supporting LDS aspects of GeDCom data
|
|
* ldstemple( event) -> string,
|
|
* ldsspousesealing( fam) -> event,
|
|
* ldsbaptism( indi) -> event,
|
|
* ldsendowment( indi) -> event,
|
|
* ldschildsealing( indi) -> event
|
|
*
|
|
* I put equivalent functions in my C source, but this can be used everywhere.
|
|
*/
|
|
|
|
func ldstemple( ev) {
|
|
fornodes( ev, childnode) {
|
|
if( eqstr( tag( childnode), "TEMP")) {
|
|
return( save( value( childnode)))
|
|
}
|
|
}
|
|
return( 0)
|
|
}
|
|
|
|
func ldsspousesealing( fam) {
|
|
fornodes( root( fam), childnode) {
|
|
if( eqstr( tag( childnode), "SLGS")) {
|
|
return( childnode)
|
|
}
|
|
}
|
|
return( 0)
|
|
}
|
|
|
|
func ldsbaptism( indi) {
|
|
fornodes( root( indi), childnode) {
|
|
if( eqstr( tag( childnode), "BAPL")) {
|
|
return( childnode)
|
|
}
|
|
}
|
|
return( 0)
|
|
}
|
|
|
|
func ldsendowment( indi) {
|
|
fornodes( root( indi), childnode) {
|
|
if( eqstr( tag( childnode), "ENDL")) {
|
|
return( childnode)
|
|
}
|
|
}
|
|
return( 0)
|
|
}
|
|
|
|
/*
|
|
* ldschildsealing(i) returns a SLGC sealing of child EVENT for the INDI indi
|
|
* or if no such event is found zero is returned.
|
|
* if the person is a child sealed in more than one family,
|
|
* only the first find is returned.
|
|
* This searches first the INDI-SLGC or INDI-FAMC-SLGC syntax, then the old FAM-CHIL-SLGC one.
|
|
*/
|
|
|
|
func ldschildsealing( indi) {
|
|
fornodes( root( indi), childnode) {
|
|
if( eqstr( tag( childnode), "FAMC")) {
|
|
fornodes( childnode, sealnode) {
|
|
if( eqstr( tag( sealnode), "SLGC")) {
|
|
return( sealnode)
|
|
}
|
|
}
|
|
} else if( eqstr( tag( childnode), "SLGC")) {
|
|
return( childnode)
|
|
}
|
|
}
|
|
set( k, save( concat( "@", key( indi), "@")))
|
|
if( p, parents( indi)) {
|
|
/* children( p, ch, i) */
|
|
fornodes( root( p), childnode) {
|
|
if( and( eqstr( tag( childnode), "CHIL"),
|
|
eqstr( value( childnode), k))) {
|
|
fornodes( childnode, sealnode) {
|
|
if( eqstr( tag( sealnode), "SLGC")) {
|
|
return( sealnode)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return( 0)
|
|
}
|
|
|
|
/* for testing
|
|
proc printordinance( ord) {
|
|
if( ord) {
|
|
tag( ord) ": "
|
|
if( val, value( ord)) {
|
|
val
|
|
} else {
|
|
set( ordd, save( date( ord)))
|
|
ordd
|
|
if( ordt, ldstemple( ord)) {
|
|
if( ordd) { ", " }
|
|
ordt
|
|
}
|
|
}
|
|
nl()
|
|
}
|
|
}
|
|
|
|
proc main() {
|
|
"All individual ordinances" nl() nl()
|
|
forindi( i, c) {
|
|
"#" d( c) ": " name( i)
|
|
if( b, birth( i)) { " b. " long( b) }
|
|
nl()
|
|
call printordinance( ldsbaptism( i))
|
|
call printordinance( ldsendowment( i))
|
|
call printordinance( ldschildsealing( i))
|
|
}
|
|
}
|
|
*/
|