Esempio n. 1
0
 def __get_fact(self):
     """ Parse a fact """
     fact = gt.Fact()
     if self.tag != "EVEN":
         fact.type = FACT_TYPES[self.tag]
         fact.value = self.data
     while self.__get_line() and self.level > 1:
         if self.tag == "TYPE":
             fact.type = self.data
         if self.tag == "DATE":
             fact.date = self.__get_text()
         elif self.tag == "PLAC":
             fact.place = self.__get_text()
         elif self.tag == "MAP":
             fact.map = self.__get_map()
         elif self.tag == "NOTE":
             if self.data[:12] == "Description:":
                 fact.value = self.data[13:]
                 continue
             num = int(self.data[2:len(self.data) - 1])
             if num not in self.note:
                 self.note[num] = gt.Note(tree=self.tree, num=num)
             fact.note = self.note[num]
         elif self.tag == "CONT":
             fact.value += "\n" + self.data
         elif self.tag == "CONC":
             fact.value += self.data
     self.flag = True
     return fact
Esempio n. 2
0
 def __get_name(self):
     """ Parse a name """
     parts = self.__get_text().split("/")
     name = gt.Name()
     added = False
     name.given = parts[0].strip()
     name.surname = parts[1].strip()
     if parts[2]:
         name.suffix = parts[2]
     if not self.indi[self.num].name:
         self.indi[self.num].name = name
         added = True
     while self.__get_line() and self.level > 1:
         if self.tag == "NPFX":
             name.prefix = self.data
         elif self.tag == "TYPE":
             if self.data == "aka":
                 self.indi[self.num].aka.add(name)
                 added = True
             elif self.data == "married":
                 self.indi[self.num].married.add(name)
                 added = True
         elif self.tag == "NICK":
             nick = gt.Name()
             nick.given = self.data
             self.indi[self.num].nicknames.add(nick)
         elif self.tag == "NOTE":
             num = int(self.data[2:len(self.data) - 1])
             if num not in self.note:
                 self.note[num] = gt.Note(tree=self.tree, num=num)
             name.note = self.note[num]
     if not added:
         self.indi[self.num].birthnames.add(name)
     self.flag = True
Esempio n. 3
0
 def __get_fam(self):
     """ Parse a family """
     while self.__get_line() and self.level > 0:
         if self.tag == "HUSB":
             self.fam[self.num].husb_num = int(self.data[2:len(self.data) -
                                                         1])
         elif self.tag == "WIFE":
             self.fam[self.num].wife_num = int(self.data[2:len(self.data) -
                                                         1])
         elif self.tag == "CHIL":
             self.fam[self.num].chil_num.add(
                 int(self.data[2:len(self.data) - 1]))
         elif self.tag in FACT_TYPES:
             self.fam[self.num].facts.add(self.__get_fact())
         elif self.tag == "SLGS":
             self.fam[self.num].sealing_spouse = self.__get_ordinance()
         elif self.tag == "_FSFTID":
             self.fam[self.num].fid = self.data
         elif self.tag == "NOTE":
             num = int(self.data[2:len(self.data) - 1])
             if num not in self.note:
                 self.note[num] = gt.Note(tree=self.tree, num=num)
             self.fam[self.num].notes.add(self.note[num])
         elif self.tag == "SOUR":
             self.fam[self.num].sources.add(self.__get_link_source())
     self.flag = True
Esempio n. 4
0
 def __get_indi(self):
     """ Parse an individual """
     while self.f and self.__get_line() and self.level > 0:
         if self.tag == "NAME":
             self.__get_name()
         elif self.tag == "SEX":
             self.indi[self.num].gender = self.data
         elif self.tag in FACT_TYPES or self.tag == "EVEN":
             self.indi[self.num].facts.add(self.__get_fact())
         elif self.tag == "BAPL":
             self.indi[self.num].baptism = self.__get_ordinance()
         elif self.tag == "CONL":
             self.indi[self.num].confirmation = self.__get_ordinance()
         elif self.tag == "ENDL":
             self.indi[self.num].endowment = self.__get_ordinance()
         elif self.tag == "SLGC":
             self.indi[self.num].sealing_child = self.__get_ordinance()
         elif self.tag == "FAMS":
             self.indi[self.num].fams_num.add(
                 int(self.data[2:len(self.data) - 1]))
         elif self.tag == "FAMC":
             self.indi[self.num].famc_num.add(
                 int(self.data[2:len(self.data) - 1]))
         elif self.tag == "_FSFTID":
             self.indi[self.num].fid = self.data
         elif self.tag == "NOTE":
             num = int(self.data[2:len(self.data) - 1])
             if num not in self.note:
                 self.note[num] = gt.Note(tree=self.tree, num=num)
             self.indi[self.num].notes.add(self.note[num])
         elif self.tag == "SOUR":
             self.indi[self.num].sources.add(self.__get_link_source())
         elif self.tag == "OBJE":
             self.indi[self.num].memories.add(self.__get_memorie())
     self.flag = True
Esempio n. 5
0
 def __get_source(self):
     """ Parse a source """
     while self.__get_line() and self.level > 0:
         if self.tag == "TITL":
             self.sour[self.num].title = self.__get_text()
         elif self.tag == "AUTH":
             self.sour[self.num].citation = self.__get_text()
         elif self.tag == "PUBL":
             self.sour[self.num].url = self.__get_text()
         elif self.tag == "REFN":
             self.sour[self.num].fid = self.data
             if self.data in self.tree.sources:
                 self.sour[self.num] = self.tree.sources[self.data]
             else:
                 self.tree.sources[self.data] = self.sour[self.num]
         elif self.tag == "NOTE":
             num = int(self.data[2:len(self.data) - 1])
             if num not in self.note:
                 self.note[num] = gt.Note(tree=self.tree, num=num)
             self.sour[self.num].notes.add(self.note[num])
     self.flag = True
Esempio n. 6
0
 def __parse(self):
     """ Parse the GEDCOM file into self.tree """
     while self.__get_line():
         if self.tag == "INDI":
             self.num = int(self.pointer[2:len(self.pointer) - 1])
             self.indi[self.num] = gt.Indi(tree=self.tree, num=self.num)
             self.__get_indi()
         elif self.tag == "FAM":
             self.num = int(self.pointer[2:len(self.pointer) - 1])
             if self.num not in self.fam:
                 self.fam[self.num] = gt.Fam(tree=self.tree, num=self.num)
             self.__get_fam()
         elif self.tag == "NOTE":
             self.num = int(self.pointer[2:len(self.pointer) - 1])
             if self.num not in self.note:
                 self.note[self.num] = gt.Note(tree=self.tree, num=self.num)
             self.__get_note()
         elif self.tag == "SOUR" and self.pointer:
             self.num = int(self.pointer[2:len(self.pointer) - 1])
             if self.num not in self.sour:
                 self.sour[self.num] = gt.Source(num=self.num)
             self.__get_source()
         elif self.tag == "SUBM" and self.pointer:
             self.__get_subm()