From 6575eede149cef6313257f34680ff2fcd9c2ab4f Mon Sep 17 00:00:00 2001 From: Alex Roitman Date: Wed, 11 Jul 2007 04:13:05 +0000 Subject: [PATCH] 2007-07-10 Alex Roitman * src/GrampsDb/_ReadXML.py (start_compound_date): Add new method; (start_datespan): Add new method. * data/grampsxml.dtd: Add datespan. * data/grampsxml.rng: Add datespan. * src/GrampsDb/_WriteXML.py (XmlWriter.write_date): Write the datespan. svn: r8711 --- ChangeLog | 8 ++++++++ data/grampsxml.dtd | 18 +++++++++++++----- data/grampsxml.rng | 9 +++++++++ src/GrampsDb/_ReadXML.py | 9 ++++++++- src/GrampsDb/_WriteXML.py | 10 ++++++++-- 5 files changed, 46 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index adea63958..efe93ffb6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2007-07-10 Alex Roitman + * src/GrampsDb/_ReadXML.py (start_compound_date): Add new method; + (start_datespan): Add new method. + * data/grampsxml.dtd: Add datespan. + * data/grampsxml.rng: Add datespan. + * src/GrampsDb/_WriteXML.py (XmlWriter.write_date): Write the + datespan. + 2007-07-05 Alex Roitman * configure.in: Require pygtk 2.8.0 or higher. diff --git a/data/grampsxml.dtd b/data/grampsxml.dtd index ed9b983db..347c401c8 100644 --- a/data/grampsxml.dtd +++ b/data/grampsxml.dtd @@ -109,7 +109,7 @@ GENDER has values of M, F, or U. + (daterange|datespan|dateval|datestr)?,note?,sourceref*)> - + @@ -199,7 +199,7 @@ EVENT --> - - + + + + + + + + estimated + calculated + + + diff --git a/src/GrampsDb/_ReadXML.py b/src/GrampsDb/_ReadXML.py index e30b786cc..f71b50d9b 100644 --- a/src/GrampsDb/_ReadXML.py +++ b/src/GrampsDb/_ReadXML.py @@ -407,6 +407,7 @@ class GrampsParser(UpdateCallback): "place" : (self.start_place, self.stop_place), "dateval" : (self.start_dateval, None), "daterange" : (self.start_daterange, None), + "datespan" : (self.start_datespan, None), "datestr" : (self.start_datestr, None), "places" : (None, self.stop_places), "placeobj" : (self.start_placeobj,self.stop_placeobj), @@ -1274,6 +1275,12 @@ class GrampsParser(UpdateCallback): self.placeobj.add_media_reference(self.pref) def start_daterange(self,attrs): + self.start_compound_date(attrs,RelLib.Date.MOD_RANGE) + + def start_datespan(self,attrs): + self.start_compound_date(attrs,RelLib.Date.MOD_SPAN) + + def start_compound_date(self,attrs,mode): if self.source_ref: dv = self.source_ref.get_date_object() elif self.ord: @@ -1336,7 +1343,7 @@ class GrampsParser(UpdateCallback): else: qual = RelLib.Date.QUAL_NONE - dv.set(qual,RelLib.Date.MOD_RANGE,cal,(d,m,y,False,rd,rm,ry,False)) + dv.set(qual,mode,cal,(d,m,y,False,rd,rm,ry,False)) def start_dateval(self,attrs): if self.source_ref: diff --git a/src/GrampsDb/_WriteXML.py b/src/GrampsDb/_WriteXML.py index 1498ecc87..e58f52925 100644 --- a/src/GrampsDb/_WriteXML.py +++ b/src/GrampsDb/_WriteXML.py @@ -757,11 +757,17 @@ class XmlWriter(UpdateCallback): mode = date.get_modifier() if date.is_compound(): + + if mode == RelLib.Date.MOD_RANGE: + tagname = 'daterange' + else: + tagname = 'datespan' + d1 = self.get_iso_date(date.get_start_date()) d2 = self.get_iso_date(date.get_stop_date()) if d1 != "" or d2 != "": - self.g.write('%s\n' - % (sp,d1,d2,qual_str,calstr)) + self.g.write('%s<%s start="%s" stop="%s"%s%s/>\n' + % (sp,tagname,d1,d2,qual_str,calstr)) elif mode != RelLib.Date.MOD_TEXTONLY: date_str = self.get_iso_date(date.get_start_date()) if date_str == "":