* src/DateDisplay.py: Now proper capitalization for _MONS.
* src/DateParser.py: Support for the RFC-2822 dates (email standard). * NEWS: Update. * src/DateDisplay.py: don't rely on strftime, since it does not svn: r3577
This commit is contained in:
parent
1915b35ba9
commit
4362e7fc5a
@ -1,5 +1,10 @@
|
|||||||
|
2004-09-26 Alex Roitman <shura@alex.neuro.umn.edu>
|
||||||
|
* src/DateDisplay.py: Now proper capitalization for _MONS.
|
||||||
|
* src/DateParser.py: Support for the RFC-2822 dates (email standard).
|
||||||
|
* NEWS: Update.
|
||||||
|
|
||||||
2004-09-26 Don Allingham <dallingham@users.sourceforge.net>
|
2004-09-26 Don Allingham <dallingham@users.sourceforge.net>
|
||||||
* src/DateDisplay: don't rely on strftime, since it does not
|
* src/DateDisplay.py: don't rely on strftime, since it does not
|
||||||
handle dates before 1900
|
handle dates before 1900
|
||||||
|
|
||||||
2004-09-25 Don Allingham <dallingham@users.sourceforge.net>
|
2004-09-25 Don Allingham <dallingham@users.sourceforge.net>
|
||||||
|
15
gramps2/NEWS
15
gramps2/NEWS
@ -1,4 +1,17 @@
|
|||||||
Version 1.1.1 -- the "Rat cake, rat sorbet, rat pudding, or strawberry tart" release
|
Version 1.1.1 -- the "Rat cake, rat sorbet, rat pudding, or strawberry tart" release
|
||||||
|
* GeneWeb Import/Export filters (Martin Hawlisch), GeneWeb mime type.
|
||||||
|
* Rework of the Date support. Separate classes for parsing and display,
|
||||||
|
allowing easy localization not limited to English sentences. Utilization
|
||||||
|
of locale info for numerical date parsing and display. New DateEditor
|
||||||
|
dialog for building precise date when parsing fails.
|
||||||
|
* Lots of stuff ported over from STABLE, see NEWS in stable version for details.
|
||||||
|
* Installation improvements
|
||||||
|
* Removal of PIL dependency.
|
||||||
|
* Numerous interface improvements.
|
||||||
|
* In-memory editing for GRAMPS XML and GEDCOM data.
|
||||||
|
* Proper support for same sex relationships.
|
||||||
|
* Proper use of GConf: schemas with the description strings, partitioning of
|
||||||
|
the preferences into subdirectories, error checking, change notifications.
|
||||||
* New "Save as" wizard interface: replaces old Export and Save as options.
|
* New "Save as" wizard interface: replaces old Export and Save as options.
|
||||||
Note: this is still unfinished at the 1.1.1 release time, please be patient.
|
Note: this is still unfinished at the 1.1.1 release time, please be patient.
|
||||||
* New Find interface for People View.
|
* New Find interface for People View.
|
||||||
@ -12,7 +25,7 @@ Version 1.1.1 -- the "Rat cake, rat sorbet, rat pudding, or strawberry tart" rel
|
|||||||
Spouses, Siblings, Children, and Parents.
|
Spouses, Siblings, Children, and Parents.
|
||||||
* Command line arguments handling is back on track.
|
* Command line arguments handling is back on track.
|
||||||
* Sorting improvements.
|
* Sorting improvements.
|
||||||
* Numerous bug fixes.
|
* Huge number of bug fixes.
|
||||||
|
|
||||||
Version 1.1.0 -- the "And now for something completely different" release
|
Version 1.1.0 -- the "And now for something completely different" release
|
||||||
* Berkeley database backend!!! Many thanks to Billy Earney for db expertise!
|
* Berkeley database backend!!! Many thanks to Billy Earney for db expertise!
|
||||||
|
@ -76,18 +76,18 @@ class DateDisplay:
|
|||||||
|
|
||||||
_MONS = (
|
_MONS = (
|
||||||
"",
|
"",
|
||||||
unicode(locale.nl_langinfo(locale.ABMON_1),_codeset).upper(),
|
unicode(locale.nl_langinfo(locale.ABMON_1),_codeset),
|
||||||
unicode(locale.nl_langinfo(locale.ABMON_2),_codeset).upper(),
|
unicode(locale.nl_langinfo(locale.ABMON_2),_codeset),
|
||||||
unicode(locale.nl_langinfo(locale.ABMON_3),_codeset).upper(),
|
unicode(locale.nl_langinfo(locale.ABMON_3),_codeset),
|
||||||
unicode(locale.nl_langinfo(locale.ABMON_4),_codeset).upper(),
|
unicode(locale.nl_langinfo(locale.ABMON_4),_codeset),
|
||||||
unicode(locale.nl_langinfo(locale.ABMON_5),_codeset).upper(),
|
unicode(locale.nl_langinfo(locale.ABMON_5),_codeset),
|
||||||
unicode(locale.nl_langinfo(locale.ABMON_6),_codeset).upper(),
|
unicode(locale.nl_langinfo(locale.ABMON_6),_codeset),
|
||||||
unicode(locale.nl_langinfo(locale.ABMON_7),_codeset).upper(),
|
unicode(locale.nl_langinfo(locale.ABMON_7),_codeset),
|
||||||
unicode(locale.nl_langinfo(locale.ABMON_8),_codeset).upper(),
|
unicode(locale.nl_langinfo(locale.ABMON_8),_codeset),
|
||||||
unicode(locale.nl_langinfo(locale.ABMON_9),_codeset).upper(),
|
unicode(locale.nl_langinfo(locale.ABMON_9),_codeset),
|
||||||
unicode(locale.nl_langinfo(locale.ABMON_10),_codeset).upper(),
|
unicode(locale.nl_langinfo(locale.ABMON_10),_codeset),
|
||||||
unicode(locale.nl_langinfo(locale.ABMON_11),_codeset).upper(),
|
unicode(locale.nl_langinfo(locale.ABMON_11),_codeset),
|
||||||
unicode(locale.nl_langinfo(locale.ABMON_12),_codeset).upper(),
|
unicode(locale.nl_langinfo(locale.ABMON_12),_codeset),
|
||||||
)
|
)
|
||||||
|
|
||||||
_tformat = locale.nl_langinfo(locale.D_FMT).replace('%y','%Y')
|
_tformat = locale.nl_langinfo(locale.D_FMT).replace('%y','%Y')
|
||||||
@ -231,9 +231,9 @@ class DateDisplay:
|
|||||||
if date_val[1] == 0:
|
if date_val[1] == 0:
|
||||||
return year
|
return year
|
||||||
else:
|
else:
|
||||||
return "%s %s" % (self._MONS[date_val[1]],year)
|
return "%s %s" % (self._MONS[date_val[1]].upper(),year)
|
||||||
else:
|
else:
|
||||||
return "%s %d, %s" % (self._MONS[date_val[1]],date_val[0],year)
|
return "%s %d, %s" % (self._MONS[date_val[1]].upper(),date_val[0],year)
|
||||||
elif self.format == 4:
|
elif self.format == 4:
|
||||||
# Day Month Year
|
# Day Month Year
|
||||||
if date_val[0] == 0:
|
if date_val[0] == 0:
|
||||||
@ -249,9 +249,9 @@ class DateDisplay:
|
|||||||
if date_val[1] == 0:
|
if date_val[1] == 0:
|
||||||
return year
|
return year
|
||||||
else:
|
else:
|
||||||
return "%s %s" % (self._MONS[date_val[1]],year)
|
return "%s %s" % (self._MONS[date_val[1]].upper(),year)
|
||||||
else:
|
else:
|
||||||
return "%d %s %s" % (date_val[0],self._MONS[date_val[1]],year)
|
return "%d %s %s" % (date_val[0],self._MONS[date_val[1]].upper(),year)
|
||||||
|
|
||||||
def _display_julian(self,date_val):
|
def _display_julian(self,date_val):
|
||||||
# Julian date display is the same as Gregorian
|
# Julian date display is the same as Gregorian
|
||||||
|
@ -42,6 +42,31 @@ class DateParser:
|
|||||||
# determine the code set returned by nl_langinfo
|
# determine the code set returned by nl_langinfo
|
||||||
_codeset = locale.nl_langinfo(locale.CODESET)
|
_codeset = locale.nl_langinfo(locale.CODESET)
|
||||||
|
|
||||||
|
_rfc_mons = (
|
||||||
|
unicode(locale.nl_langinfo(locale.ABMON_1),_codeset),
|
||||||
|
unicode(locale.nl_langinfo(locale.ABMON_2),_codeset),
|
||||||
|
unicode(locale.nl_langinfo(locale.ABMON_3),_codeset),
|
||||||
|
unicode(locale.nl_langinfo(locale.ABMON_4),_codeset),
|
||||||
|
unicode(locale.nl_langinfo(locale.ABMON_5),_codeset),
|
||||||
|
unicode(locale.nl_langinfo(locale.ABMON_6),_codeset),
|
||||||
|
unicode(locale.nl_langinfo(locale.ABMON_7),_codeset),
|
||||||
|
unicode(locale.nl_langinfo(locale.ABMON_8),_codeset),
|
||||||
|
unicode(locale.nl_langinfo(locale.ABMON_9),_codeset),
|
||||||
|
unicode(locale.nl_langinfo(locale.ABMON_10),_codeset),
|
||||||
|
unicode(locale.nl_langinfo(locale.ABMON_11),_codeset),
|
||||||
|
unicode(locale.nl_langinfo(locale.ABMON_12),_codeset),
|
||||||
|
)
|
||||||
|
|
||||||
|
_rfc_days = (
|
||||||
|
unicode(locale.nl_langinfo(locale.ABDAY_1),_codeset),
|
||||||
|
unicode(locale.nl_langinfo(locale.ABDAY_2),_codeset),
|
||||||
|
unicode(locale.nl_langinfo(locale.ABDAY_3),_codeset),
|
||||||
|
unicode(locale.nl_langinfo(locale.ABDAY_4),_codeset),
|
||||||
|
unicode(locale.nl_langinfo(locale.ABDAY_5),_codeset),
|
||||||
|
unicode(locale.nl_langinfo(locale.ABDAY_6),_codeset),
|
||||||
|
unicode(locale.nl_langinfo(locale.ABDAY_7),_codeset),
|
||||||
|
)
|
||||||
|
|
||||||
month_to_int = {
|
month_to_int = {
|
||||||
unicode(locale.nl_langinfo(locale.MON_1),_codeset).lower() : 1,
|
unicode(locale.nl_langinfo(locale.MON_1),_codeset).lower() : 1,
|
||||||
unicode(locale.nl_langinfo(locale.ABMON_1),_codeset).lower() : 1,
|
unicode(locale.nl_langinfo(locale.ABMON_1),_codeset).lower() : 1,
|
||||||
@ -149,6 +174,9 @@ class DateParser:
|
|||||||
'calculated' : Date.QUAL_CALCULATED,
|
'calculated' : Date.QUAL_CALCULATED,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_rfc_mon_str = '(' + '|'.join(_rfc_mons) + ')'
|
||||||
|
_rfc_day_str = '(' + '|'.join(_rfc_days) + ')'
|
||||||
|
|
||||||
_qual_str = '(' + '|'.join(
|
_qual_str = '(' + '|'.join(
|
||||||
[ key.replace('.','\.') for key in quality_to_int.keys() ]
|
[ key.replace('.','\.') for key in quality_to_int.keys() ]
|
||||||
) + ')'
|
) + ')'
|
||||||
@ -196,6 +224,8 @@ class DateParser:
|
|||||||
re.IGNORECASE)
|
re.IGNORECASE)
|
||||||
_numeric = re.compile("((\d+)[/\.])?((\d+)[/\.])?(\d+)")
|
_numeric = re.compile("((\d+)[/\.])?((\d+)[/\.])?(\d+)")
|
||||||
_iso = re.compile("(\d+)-(\d+)-(\d+)")
|
_iso = re.compile("(\d+)-(\d+)-(\d+)")
|
||||||
|
_rfc = re.compile("%s,\s+(\d\d)\s+%s\s+(\d+)\s+\d\d:\d\d:\d\d\s+(\+|-)\d\d\d\d"
|
||||||
|
% (_rfc_day_str,_rfc_mon_str))
|
||||||
|
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@ -300,6 +330,14 @@ class DateParser:
|
|||||||
d = self._get_int(groups[2])
|
d = self._get_int(groups[2])
|
||||||
return (d,m,y,False)
|
return (d,m,y,False)
|
||||||
|
|
||||||
|
match = self._rfc.match(text)
|
||||||
|
if match:
|
||||||
|
groups = match.groups()
|
||||||
|
d = self._get_int(groups[1])
|
||||||
|
m = self.month_to_int[groups[2].lower()]
|
||||||
|
y = self._get_int(groups[3])
|
||||||
|
return (d,m,y,False)
|
||||||
|
|
||||||
match = self._numeric.match(text)
|
match = self._numeric.match(text)
|
||||||
if match:
|
if match:
|
||||||
groups = match.groups()
|
groups = match.groups()
|
||||||
|
Loading…
Reference in New Issue
Block a user