diff --git a/gramps2/ChangeLog b/gramps2/ChangeLog index b1bf91176..a656442ae 100644 --- a/gramps2/ChangeLog +++ b/gramps2/ChangeLog @@ -1,3 +1,12 @@ +2005-11-28 Julio Sanchez + * src/DateParser.py: match modifiers in reverse length order so that + multiword modifiers work even if other modifier matches the first + words of the longer modifier + * src/ReadGedcom.py: be more tolerant w.r.t. whitespace in input, + to parse the output from tools that try (incorrectly) to make + the GEDCOM easier to read. Gedcom.pm is one example. + * src/WriteGedcom.py: make sure referenced family sources are output + 2005-11-27 Don Allingham * src/MergeData.py: fix dangling family after a merge. diff --git a/gramps2/src/DateParser.py b/gramps2/src/DateParser.py index 2b73f3497..a44c601f3 100644 --- a/gramps2/src/DateParser.py +++ b/gramps2/src/DateParser.py @@ -241,8 +241,10 @@ class DateParser: self._qual_str = '(' + '|'.join( [ key.replace('.','\.') for key in self.quality_to_int.keys() ] ) + ')' + keys = self.modifier_to_int.keys() + keys.sort(lambda x, y: cmp(len(y), len(x))) self._mod_str = '(' + '|'.join( - [ key.replace('.','\.') for key in self.modifier_to_int.keys() ] + [ key.replace('.','\.') for key in keys ] ) + ')' self._mod_after_str = '(' + '|'.join( [ key.replace('.','\.') for key in self.modifier_after_to_int.keys() ] diff --git a/gramps2/src/ReadGedcom.py b/gramps2/src/ReadGedcom.py index e5e9f9623..3c3c82fad 100644 --- a/gramps2/src/ReadGedcom.py +++ b/gramps2/src/ReadGedcom.py @@ -140,6 +140,7 @@ snameRegexp= re.compile(r"/([^/]*)/([^/]*)") calRegexp = re.compile(r"\s*(ABT|BEF|AFT)?\s*@#D([^@]+)@\s*(.*)$") rangeRegexp = re.compile(r"\s*BET\s+@#D([^@]+)@\s*(.*)\s+AND\s+@#D([^@]+)@\s*(.*)$") spanRegexp = re.compile(r"\s*FROM\s+@#D([^@]+)@\s*(.*)\s+TO\s+@#D([^@]+)@\s*(.*)$") +whitespaceRegexp = re.compile(r"\s+") #------------------------------------------------------------------------- # @@ -532,7 +533,7 @@ class GedcomParser: self.text = string.translate(self.text,self.transtable2) self.index += 1 - l = self.text.split(' ', 2) + l = whitespaceRegexp.split(self.text, 2) ln = len(l) try: if ln == 2: diff --git a/gramps2/src/WriteGedcom.py b/gramps2/src/WriteGedcom.py index d82a09968..54874eacf 100644 --- a/gramps2/src/WriteGedcom.py +++ b/gramps2/src/WriteGedcom.py @@ -106,6 +106,11 @@ _get_int = re.compile('([0-9]+)') #------------------------------------------------------------------------- def add_familys_sources(db,family_handle,slist,private): family = db.get_family_from_handle(family_handle) + for source_ref in family.get_source_references(): + sbase = source_ref.get_base_handle() + if sbase != None and not slist.has_key(sbase): + slist[sbase] = 1 + for event_handle in family.get_event_list(): if event_handle: event = db.get_event_from_handle(event_handle)