procedure gedload: load GEDCOM data from file f procedure gedwalk: generate GEDCOM tree nodes in preorder procedure gedsub: find subrecords procedure gedval: find subrecord values procedure gedref: find referenced nodes procedure gedfnf: get first name first procedure gedlnf: get last name first procedure gednmf: format name procedure geddate: get canonical date procedure gedyear: get year procedure gedfind: find individual by name
link gedcom
March 25, 2002; Gregg M. Townsend
This file is in the public domain.
These procedures read and interpret GEDCOM files, a standard format for genealogy databases. ____________________________________________________________ gedload(f) loads GEDCOM data from file f and returns a gedcom record containing the following fields: tree root of tree of gednode records id table of labeled nodes, indexed by @ID@ fam list of FAM nodes (marriages) ind list of INDI nodes (individuals) The tree is composed of gednode records R containing these fields: level level id ID (label), including @...@ delimiters tag tag data data lnum line number parent parent node in tree ref referenced node, if any sub sub-entry list hcode unique hashcode, if INDI node gedwalk(tree) generates the nodes of the tree in preorder. Three procedures find descendants of a node based on a sequence of identifying tag strings: gedsub(R, tag...) generates subnodes specified by tag sequence gedval(R, tag...) generates data values of those subnodes gedref(R, tag...) generates nodes referenced by those subnodes Three procedures extract a person's name from an INDI record: gedfnf(R) produces "John Quincy Adams" form gedlnf(R) produces "Adams, John Quincy" form gednmf(R,f) produces an arbitrary format, substituting prefix, firstname, lastname, suffix for "P", "F", "L", "S" (respectively) in f geddate(R) finds the DATE subnode of a node and returns a string of at least 12 characters in a standard form such as "11 Jul 1767" or "abt 1810". It is assumed that the input is in English. gedyear(R) returns the year from the DATE subnode of a node. gedfind(g,s) generates the individuals under gedcom record g that are named by s, a string of whitespace-separated words. gedfind() generates each INDI node for which every word of s is matched by either a word of the individual's name or by the birth year. Matching is case-insensitive.