parent
dc354dfd4f
commit
96e9fc4f6b
@ -313,6 +313,23 @@ class GedcomParser(UpdateCallback):
|
|||||||
self.rid2id = {}
|
self.rid2id = {}
|
||||||
self.nid2id = {}
|
self.nid2id = {}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Parse table for SUBM tag
|
||||||
|
#
|
||||||
|
self.subm_parse_tbl = {
|
||||||
|
# +1 NAME <SUBMITTER_NAME>
|
||||||
|
TOKEN_NAME : self.__subm_name,
|
||||||
|
# +1 <<ADDRESS_STRUCTURE>>
|
||||||
|
TOKEN_ADDR : self.__subm_addr,
|
||||||
|
TOKEN_PHON : self.__subm_phon,
|
||||||
|
TOKEN_ : self.__subm_phon,
|
||||||
|
# +1 <<MULTIMEDIA_LINK>>
|
||||||
|
# +1 LANG <LANGUAGE_PREFERENCE>
|
||||||
|
# +1 RFN <SUBMITTER_REGISTERED_RFN>
|
||||||
|
# +1 RIN <AUTOMATED_RECORD_ID>
|
||||||
|
# +1 <<CHANGE_DATE>>
|
||||||
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
# Parse table for INDI tag
|
# Parse table for INDI tag
|
||||||
#
|
#
|
||||||
@ -803,7 +820,6 @@ class GedcomParser(UpdateCallback):
|
|||||||
self.want_parse_warnings = False
|
self.want_parse_warnings = False
|
||||||
self.__parse_header_source()
|
self.__parse_header_source()
|
||||||
self.want_parse_warnings = True
|
self.want_parse_warnings = True
|
||||||
self.__parse_submitter()
|
|
||||||
if self.use_def_src:
|
if self.use_def_src:
|
||||||
self.dbase.add_source(self.def_src, self.trans)
|
self.dbase.add_source(self.def_src, self.trans)
|
||||||
self.__parse_record()
|
self.__parse_record()
|
||||||
@ -1097,24 +1113,25 @@ class GedcomParser(UpdateCallback):
|
|||||||
except TypeError:
|
except TypeError:
|
||||||
return
|
return
|
||||||
|
|
||||||
def __parse_submitter(self):
|
def __parse_submitter(self, line):
|
||||||
"""
|
"""
|
||||||
Parses the submitter data
|
Parses the submitter data
|
||||||
|
|
||||||
|
n @<XREF:SUBM>@ SUBM
|
||||||
|
+1 NAME <SUBMITTER_NAME>
|
||||||
|
+1 <<ADDRESS_STRUCTURE>>
|
||||||
|
+1 <<MULTIMEDIA_LINK>>
|
||||||
|
+1 LANG <LANGUAGE_PREFERENCE>
|
||||||
|
+1 RFN <SUBMITTER_REGISTERED_RFN>
|
||||||
|
+1 RIN <AUTOMATED_RECORD_ID>
|
||||||
|
+1 <<CHANGE_DATE>>
|
||||||
"""
|
"""
|
||||||
line = self.__get_next_line()
|
researcher = gen.lib.Researcher()
|
||||||
if line.data != "SUBM":
|
state = GedcomUtils.CurrentState()
|
||||||
self._backup()
|
state.res = researcher
|
||||||
return
|
state.level = 1
|
||||||
else:
|
self.__parse_level(state, self.subm_parse_tbl, self.__undefined)
|
||||||
while True:
|
self.dbase.set_researcher(state.res)
|
||||||
line = self.__get_next_line()
|
|
||||||
if self.__level_is_finished(line, 1):
|
|
||||||
break
|
|
||||||
elif line.token == TOKEN_NAME:
|
|
||||||
if self.use_def_src:
|
|
||||||
self.def_src.set_author(line.data)
|
|
||||||
elif line.token == TOKEN_ADDR:
|
|
||||||
self.__skip_subordinate_levels(2)
|
|
||||||
|
|
||||||
def __parse_record(self):
|
def __parse_record(self):
|
||||||
"""
|
"""
|
||||||
@ -1136,7 +1153,9 @@ class GedcomParser(UpdateCallback):
|
|||||||
self.__parse_obje(line)
|
self.__parse_obje(line)
|
||||||
elif key in ("REPO", "REPOSITORY"):
|
elif key in ("REPO", "REPOSITORY"):
|
||||||
self.__parse_repo(line)
|
self.__parse_repo(line)
|
||||||
elif key in ("SUBM", "SUBN", "SUBMITTER"):
|
elif key in ("SUBM", "SUBMITTER"):
|
||||||
|
self.__parse_submitter(line)
|
||||||
|
elif key in ("SUBN"):
|
||||||
self.__skip_subordinate_levels(1)
|
self.__skip_subordinate_levels(1)
|
||||||
elif line.token in (TOKEN_SUBM, TOKEN_SUBN, TOKEN_IGNORE):
|
elif line.token in (TOKEN_SUBM, TOKEN_SUBN, TOKEN_IGNORE):
|
||||||
self.__skip_subordinate_levels(1)
|
self.__skip_subordinate_levels(1)
|
||||||
@ -4274,4 +4293,44 @@ class GedcomParser(UpdateCallback):
|
|||||||
sref.set_reference_handle(self.def_src.handle)
|
sref.set_reference_handle(self.def_src.handle)
|
||||||
obj.add_source_reference(sref)
|
obj.add_source_reference(sref)
|
||||||
|
|
||||||
|
def __subm_name(self, line, state):
|
||||||
|
"""
|
||||||
|
@param line: The current line in GedLine format
|
||||||
|
@type line: GedLine
|
||||||
|
@param state: The current state
|
||||||
|
@type state: CurrentState
|
||||||
|
"""
|
||||||
|
state.res.set_name(line.data)
|
||||||
|
|
||||||
|
def __subm_addr(self, line, state):
|
||||||
|
"""
|
||||||
|
@param line: The current line in GedLine format
|
||||||
|
@type line: GedLine
|
||||||
|
@param state: The current state
|
||||||
|
@type state: CurrentState
|
||||||
|
"""
|
||||||
|
sub_state = GedcomUtils.CurrentState(level=state.level + 1)
|
||||||
|
sub_state.location = gen.lib.Location()
|
||||||
|
sub_state.location.set_street(line.data)
|
||||||
|
|
||||||
|
self.__parse_level(sub_state, self.parse_loc_tbl, self.__undefined)
|
||||||
|
|
||||||
|
location = sub_state.location
|
||||||
|
state.res.set_address(location.get_street())
|
||||||
|
state.res.set_city(location.get_city())
|
||||||
|
state.res.set_state(location.get_state())
|
||||||
|
state.res.set_country(location.get_country())
|
||||||
|
state.res.set_postal_code(location.get_postal_code())
|
||||||
|
|
||||||
|
def __subm_phon(self, line, state):
|
||||||
|
"""
|
||||||
|
n PHON <PHONE_NUMBER> {0:3}
|
||||||
|
|
||||||
|
@param line: The current line in GedLine format
|
||||||
|
@type line: GedLine
|
||||||
|
@param state: The current state
|
||||||
|
@type state: CurrentState
|
||||||
|
"""
|
||||||
|
state.res.set_phone(line.data)
|
||||||
|
|
||||||
#===eof===
|
#===eof===
|
||||||
|
Loading…
x
Reference in New Issue
Block a user