def parse_single_family(gedlist, index, xref): """ Parses a single family from a GEDCOM giving the starting index of a 'FAM' tag. Returns an Family class """ family = Family(xref) date_type = None for gedline in gedlist[index + 1:]: if gedline.level == 0: break if gedline.tag == "MARR": date_type = "MARR" if gedline.tag == "DIV": date_type = "DIV" if gedline.tag == "HUSB": family.husband = gedline.args[0] if gedline.tag == "WIFE": family.wife = gedline.args[0] if gedline.tag == "CHIL": family.children.append(gedline.args[0]) # This assumes the following date tag corresponds to prev tag if gedline.tag == "DATE": if date_type == "MARR": # Store marriage date as datetime family.marriage = datetime( int(gedline.args[2]), datetime.strptime(gedline.args[1], '%b').month, int(gedline.args[0])) date_type = None elif date_type == "DIV": # Store divorce date as datetime family.divorce = datetime( int(gedline.args[2]), datetime.strptime(gedline.args[1], '%b').month, int(gedline.args[0])) date_type = None else: print "ERROR" return family