2007-02-28 Don Allingham <don@gramps-project.org>
* src/GrampsDbUtils/_GedcomParse.py: more enhancements * src/GrampsDbUtils/_GedcomChar.py: more enhancements * src/GrampsDbUtils/_GedcomTokens.py: more enhancements svn: r8259
This commit is contained in:
parent
66b631f12e
commit
d98a23b8d1
@ -1,3 +1,8 @@
|
|||||||
|
2007-02-28 Don Allingham <don@gramps-project.org>
|
||||||
|
* src/GrampsDbUtils/_GedcomParse.py: more enhancements
|
||||||
|
* src/GrampsDbUtils/_GedcomChar.py: more enhancements
|
||||||
|
* src/GrampsDbUtils/_GedcomTokens.py: more enhancements
|
||||||
|
|
||||||
2007-02-28 Martin Hawlisch <Martin.Hawlisch@gmx.de>
|
2007-02-28 Martin Hawlisch <Martin.Hawlisch@gmx.de>
|
||||||
* src/plugins/ImportGeneWeb.py: Adapt to new Notes api; Some parsing
|
* src/plugins/ImportGeneWeb.py: Adapt to new Notes api; Some parsing
|
||||||
fixes
|
fixes
|
||||||
|
@ -37,6 +37,7 @@ class UTF8Reader(BaseReader):
|
|||||||
|
|
||||||
def __init__(self, ifile):
|
def __init__(self, ifile):
|
||||||
BaseReader.__init__(self, ifile, 'utf8')
|
BaseReader.__init__(self, ifile, 'utf8')
|
||||||
|
self.reset()
|
||||||
|
|
||||||
def reset(self):
|
def reset(self):
|
||||||
self.ifile.seek(0)
|
self.ifile.seek(0)
|
||||||
|
@ -186,6 +186,25 @@ FTW_BAD_PLACE = [
|
|||||||
RelLib.EventType.DEGREE
|
RelLib.EventType.DEGREE
|
||||||
]
|
]
|
||||||
|
|
||||||
|
MEDIA_MAP = {
|
||||||
|
'audio' : RelLib.SourceMediaType.AUDIO,
|
||||||
|
'book' : RelLib.SourceMediaType.BOOK,
|
||||||
|
'card' : RelLib.SourceMediaType.CARD,
|
||||||
|
'electronic' : RelLib.SourceMediaType.ELECTRONIC,
|
||||||
|
'fiche' : RelLib.SourceMediaType.FICHE,
|
||||||
|
'microfiche' : RelLib.SourceMediaType.FICHE,
|
||||||
|
'microfilm' : RelLib.SourceMediaType.FICHE,
|
||||||
|
'film' : RelLib.SourceMediaType.FILM,
|
||||||
|
'magazine' : RelLib.SourceMediaType.MAGAZINE,
|
||||||
|
'manuscript' : RelLib.SourceMediaType.MANUSCRIPT,
|
||||||
|
'map' : RelLib.SourceMediaType.MAP,
|
||||||
|
'newspaper' : RelLib.SourceMediaType.NEWSPAPER,
|
||||||
|
'photo' : RelLib.SourceMediaType.PHOTO,
|
||||||
|
'tombstone' : RelLib.SourceMediaType.TOMBSTONE,
|
||||||
|
'grave' : RelLib.SourceMediaType.TOMBSTONE,
|
||||||
|
'video' : RelLib.SourceMediaType.VIDEO,
|
||||||
|
}
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
# GEDCOM events to GRAMPS events conversion
|
# GEDCOM events to GRAMPS events conversion
|
||||||
@ -242,6 +261,7 @@ class StageOne:
|
|||||||
data = line.split(None,2) + ['']
|
data = line.split(None,2) + ['']
|
||||||
try:
|
try:
|
||||||
(level, key, value) = data[:3]
|
(level, key, value) = data[:3]
|
||||||
|
value = value.strip()
|
||||||
try:
|
try:
|
||||||
level = int(level)
|
level = int(level)
|
||||||
except:
|
except:
|
||||||
@ -629,19 +649,20 @@ class GedcomParser(UpdateCallback):
|
|||||||
}
|
}
|
||||||
|
|
||||||
self.parse_loc_tbl = {
|
self.parse_loc_tbl = {
|
||||||
TOKEN_ADDR : self.func_location_addr,
|
TOKEN_ADDR : self.func_location_addr,
|
||||||
TOKEN_ADR1 : self.func_location_addr,
|
TOKEN_ADR1 : self.func_location_addr,
|
||||||
TOKEN_ADR2 : self.func_location_addr,
|
TOKEN_ADR2 : self.func_location_addr,
|
||||||
TOKEN_DATE : self.func_location_date,
|
TOKEN_DATE : self.func_location_date,
|
||||||
TOKEN_CITY : self.func_location_city,
|
TOKEN_CITY : self.func_location_city,
|
||||||
TOKEN_STAE : self.func_location_stae,
|
TOKEN_STAE : self.func_location_stae,
|
||||||
TOKEN_POST : self.func_location_post,
|
TOKEN_POST : self.func_location_post,
|
||||||
TOKEN_CTRY : self.func_location_ctry,
|
TOKEN_CTRY : self.func_location_ctry,
|
||||||
TOKEN_NOTE : self.func_location_note,
|
TOKEN_NOTE : self.func_location_note,
|
||||||
TOKEN_RNOTE: self.func_location_note,
|
TOKEN_RNOTE : self.func_location_note,
|
||||||
TOKEN__LOC : self.func_ignore,
|
TOKEN__LOC : self.func_ignore,
|
||||||
TOKEN__NAME: self.func_ignore,
|
TOKEN__NAME : self.func_ignore,
|
||||||
TOKEN_PHON : self.func_ignore,
|
TOKEN_PHON : self.func_ignore,
|
||||||
|
TOKEN_IGNORE : self.func_ignore,
|
||||||
}
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -766,9 +787,11 @@ class GedcomParser(UpdateCallback):
|
|||||||
}
|
}
|
||||||
|
|
||||||
self.repo_ref_tbl = {
|
self.repo_ref_tbl = {
|
||||||
TOKEN_CALN : self.func_repo_ref_call,
|
TOKEN_CALN : self.func_repo_ref_call,
|
||||||
TOKEN_NOTE : self.func_repo_ref_note,
|
TOKEN_NOTE : self.func_repo_ref_note,
|
||||||
TOKEN_RNOTE: self.func_repo_ref_note,
|
TOKEN_RNOTE : self.func_repo_ref_note,
|
||||||
|
TOKEN_MEDI : self.func_repo_ref_medi,
|
||||||
|
TOKEN_IGNORE : self.func_ignore,
|
||||||
}
|
}
|
||||||
|
|
||||||
self.parse_person_adopt = {
|
self.parse_person_adopt = {
|
||||||
@ -1082,6 +1105,8 @@ class GedcomParser(UpdateCallback):
|
|||||||
@param level: Current level in the file
|
@param level: Current level in the file
|
||||||
@type level: int
|
@type level: int
|
||||||
"""
|
"""
|
||||||
|
#import traceback
|
||||||
|
#traceback.print_stack()
|
||||||
text = self.groups.line
|
text = self.groups.line
|
||||||
msg = _("Line %d was not understood, so it was ignored.") % text
|
msg = _("Line %d was not understood, so it was ignored.") % text
|
||||||
self.warn(msg)
|
self.warn(msg)
|
||||||
@ -1224,6 +1249,10 @@ class GedcomParser(UpdateCallback):
|
|||||||
@param state: The current state
|
@param state: The current state
|
||||||
@type state: CurrentState
|
@type state: CurrentState
|
||||||
"""
|
"""
|
||||||
|
# import traceback
|
||||||
|
# traceback.print_stack()
|
||||||
|
# print line
|
||||||
|
# sys.exit(1)
|
||||||
self.not_recognized(state.level+1)
|
self.not_recognized(state.level+1)
|
||||||
|
|
||||||
#----------------------------------------------------------------------
|
#----------------------------------------------------------------------
|
||||||
@ -3592,6 +3621,11 @@ class GedcomParser(UpdateCallback):
|
|||||||
state.repo_ref.set_call_number(line.data)
|
state.repo_ref.set_call_number(line.data)
|
||||||
self.skip_subordinate_levels(state.level+1)
|
self.skip_subordinate_levels(state.level+1)
|
||||||
|
|
||||||
|
def func_repo_ref_medi(self, line, state):
|
||||||
|
name = line.data
|
||||||
|
mtype = MEDIA_MAP.get(name.lower(), (RelLib.SourceMediaType.CUSTOM, name))
|
||||||
|
state.repo_ref.set_media_type(mtype)
|
||||||
|
|
||||||
def func_repo_ref_note(self, line, state):
|
def func_repo_ref_note(self, line, state):
|
||||||
"""
|
"""
|
||||||
@param line: The current line in GedLine format
|
@param line: The current line in GedLine format
|
||||||
@ -4184,14 +4218,14 @@ class GedcomParser(UpdateCallback):
|
|||||||
def parse_source_reference(self, src_ref, level, handle):
|
def parse_source_reference(self, src_ref, level, handle):
|
||||||
"""Reads the data associated with a SOUR reference"""
|
"""Reads the data associated with a SOUR reference"""
|
||||||
state = GedcomUtils.CurrentState()
|
state = GedcomUtils.CurrentState()
|
||||||
state.level = level
|
state.level = level+1
|
||||||
state.src_ref = src_ref
|
state.src_ref = src_ref
|
||||||
state.handle = handle
|
state.handle = handle
|
||||||
self.parse_level(state, self.srcref_parse_tbl, self.func_ignore)
|
self.parse_level(state, self.srcref_parse_tbl, self.func_ignore)
|
||||||
|
|
||||||
def parse_header_head(self):
|
def parse_header_head(self):
|
||||||
"""validiates that this is a valid GEDCOM file"""
|
"""validiates that this is a valid GEDCOM file"""
|
||||||
line = self.lexer.readline()
|
line = self.get_next()
|
||||||
if line.token != TOKEN_HEAD:
|
if line.token != TOKEN_HEAD:
|
||||||
raise Errors.GedcomError("%s is not a GEDCOM file" % self.filename)
|
raise Errors.GedcomError("%s is not a GEDCOM file" % self.filename)
|
||||||
|
|
||||||
|
@ -236,5 +236,6 @@ tokens = {
|
|||||||
"_MEDI" : TOKEN_MEDI, "_MASTER" : TOKEN_IGNORE,
|
"_MEDI" : TOKEN_MEDI, "_MASTER" : TOKEN_IGNORE,
|
||||||
"_LEVEL" : TOKEN_IGNORE,"_PUBLISHER" : TOKEN_IGNORE,
|
"_LEVEL" : TOKEN_IGNORE,"_PUBLISHER" : TOKEN_IGNORE,
|
||||||
"MAP" : TOKEN_MAP, "LATI" : TOKEN_LATI,
|
"MAP" : TOKEN_MAP, "LATI" : TOKEN_LATI,
|
||||||
"LONG" : TOKEN_LONG,
|
"LONG" : TOKEN_LONG, "_ITALIC" : TOKEN_IGNORE,
|
||||||
|
"_PAREN" : TOKEN_IGNORE,"_PLACE" : TOKEN_IGNORE,
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user