* src/DateDisplay.py: use locale.nl_langinfo to get month
names without manual encoding * src/DateParser.py: use locale.nl_langinfo to get month names without manual encoding svn: r3550
This commit is contained in:
parent
ed495982a5
commit
c3c613e278
@ -1,3 +1,9 @@
|
||||
2004-09-17 Don Allingham <dallingham@users.sourceforge.net>
|
||||
* src/DateDisplay.py: use locale.nl_langinfo to get month
|
||||
names without manual encoding
|
||||
* src/DateParser.py: use locale.nl_langinfo to get month
|
||||
names without manual encoding
|
||||
|
||||
2004-09-16 Don Allingham <dallingham@users.sourceforge.net>
|
||||
* src/Calendar.py: removed
|
||||
* src/Gregorian.py: removed
|
||||
|
@ -29,6 +29,7 @@ __author__ = "Donald N. Allingham"
|
||||
__version__ = "$Revision$"
|
||||
|
||||
import Date
|
||||
import locale
|
||||
|
||||
class DateDisplay:
|
||||
"""
|
||||
@ -36,83 +37,66 @@ class DateDisplay:
|
||||
"""
|
||||
|
||||
formats = (
|
||||
"YYYY-MM-DD",
|
||||
"MM/DD/YYYY",
|
||||
"Month Day, Year",
|
||||
"MON DAY, YEAR",
|
||||
"Day Month Year",
|
||||
"DAY MON YEAR"
|
||||
"YYYY-MM-DD", "MM/DD/YYYY", "Month Day, Year",
|
||||
"MON DAY, YEAR", "Day Month Year", "DAY MON YEAR"
|
||||
)
|
||||
|
||||
_calendar = (
|
||||
"",
|
||||
" (Julian)",
|
||||
" (Hebrew)",
|
||||
" (French Republican)",
|
||||
" (Persian)",
|
||||
" (Islamic)"
|
||||
calendar = (
|
||||
""," (Julian)"," (Hebrew)"," (French Republican)",
|
||||
" (Persian)"," (Islamic)"
|
||||
)
|
||||
|
||||
_mod_str = (
|
||||
"",
|
||||
"before ",
|
||||
"after ",
|
||||
"about ",
|
||||
"estimated ",
|
||||
"calculated ",
|
||||
""
|
||||
"","before ","after ","about ","estimated ","calculated ",""
|
||||
)
|
||||
|
||||
# determine the code set returned by nl_langinfo
|
||||
_codeset = locale.nl_langinfo(locale.CODESET)
|
||||
|
||||
# get month information from nl_langinfo. Since nl_langinfo
|
||||
# returns data in the code set specified by the user, and
|
||||
# gnome wants unicode, we need to convert each string from
|
||||
# the native code set into unicode
|
||||
_months = (
|
||||
"",
|
||||
"January",
|
||||
"February",
|
||||
"March",
|
||||
"April",
|
||||
"May",
|
||||
"June",
|
||||
"July",
|
||||
"August",
|
||||
"September",
|
||||
"October",
|
||||
"November",
|
||||
"December"
|
||||
unicode(locale.nl_langinfo(locale.MON_1),_codeset),
|
||||
unicode(locale.nl_langinfo(locale.MON_2),_codeset),
|
||||
unicode(locale.nl_langinfo(locale.MON_3),_codeset),
|
||||
unicode(locale.nl_langinfo(locale.MON_4),_codeset),
|
||||
unicode(locale.nl_langinfo(locale.MON_5),_codeset),
|
||||
unicode(locale.nl_langinfo(locale.MON_6),_codeset),
|
||||
unicode(locale.nl_langinfo(locale.MON_7),_codeset),
|
||||
unicode(locale.nl_langinfo(locale.MON_8),_codeset),
|
||||
unicode(locale.nl_langinfo(locale.MON_9),_codeset),
|
||||
unicode(locale.nl_langinfo(locale.MON_10),_codeset),
|
||||
unicode(locale.nl_langinfo(locale.MON_11),_codeset),
|
||||
unicode(locale.nl_langinfo(locale.MON_12),_codeset),
|
||||
)
|
||||
|
||||
_MONS = (
|
||||
"",
|
||||
"JAN",
|
||||
"FEB",
|
||||
"MAR",
|
||||
"APR",
|
||||
"MAY",
|
||||
"JUN",
|
||||
"JUL",
|
||||
"AUG",
|
||||
"SEP",
|
||||
"OCT",
|
||||
"NOV",
|
||||
"DEC"
|
||||
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),
|
||||
)
|
||||
|
||||
_hebrew = (
|
||||
"",
|
||||
"Tishri",
|
||||
"Heshvan",
|
||||
"Kislev",
|
||||
"Tevet",
|
||||
"Shevat",
|
||||
"AdarI",
|
||||
"AdarII",
|
||||
"Nisan",
|
||||
"Iyyar",
|
||||
"Sivan",
|
||||
"Tammuz",
|
||||
"Av",
|
||||
"Elul"
|
||||
"", "Tishri", "Heshvan", "Kislev", "Tevet", "Shevat",
|
||||
"AdarI", "AdarII", "Nisan", "Iyyar", "Sivan", "Tammuz",
|
||||
"Av", "Elul"
|
||||
)
|
||||
|
||||
_french = (
|
||||
"",
|
||||
unicode("Vendémiaire",'latin-1'),
|
||||
unicode("Brumaire",'latin-1'),
|
||||
unicode("Frimaire",'latin-1'),
|
||||
@ -129,33 +113,15 @@ class DateDisplay:
|
||||
)
|
||||
|
||||
_persian = (
|
||||
"Farvardin",
|
||||
"Ordibehesht",
|
||||
"Khordad",
|
||||
"Tir",
|
||||
"Mordad",
|
||||
"Shahrivar",
|
||||
"Mehr",
|
||||
"Aban",
|
||||
"Azar",
|
||||
"Dey",
|
||||
"Bahman",
|
||||
"Esfand"
|
||||
"", "Farvardin", "Ordibehesht", "Khordad", "Tir",
|
||||
"Mordad", "Shahrivar", "Mehr", "Aban", "Azar",
|
||||
"Dey", "Bahman", "Esfand"
|
||||
)
|
||||
|
||||
_islamic = (
|
||||
"Muharram",
|
||||
"Safar",
|
||||
"Rabi`al-Awwal",
|
||||
"Rabi`ath-Thani",
|
||||
"Jumada l-Ula",
|
||||
"Jumada t-Tania",
|
||||
"Rajab",
|
||||
"Sha`ban",
|
||||
"Ramadan",
|
||||
"Shawwal",
|
||||
"Dhu l-Qa`da",
|
||||
"Dhu l-Hijja"
|
||||
"", "Muharram", "Safar", "Rabi`al-Awwal", "Rabi`ath-Thani",
|
||||
"Jumada l-Ula", "Jumada t-Tania", "Rajab", "Sha`ban",
|
||||
"Ramadan", "Shawwal", "Dhu l-Qa`da", "Dhu l-Hijja"
|
||||
)
|
||||
|
||||
def __init__(self,format=None):
|
||||
@ -164,6 +130,7 @@ class DateDisplay:
|
||||
of the desired format. The format value must correspond to the format
|
||||
list value (DateDisplay.format[]).
|
||||
"""
|
||||
|
||||
self.verify_format(format)
|
||||
if format == None:
|
||||
self.format = 0
|
||||
@ -178,7 +145,7 @@ class DateDisplay:
|
||||
self._display_persian,
|
||||
self._display_islamic,
|
||||
]
|
||||
|
||||
|
||||
def verify_format(self,format):
|
||||
"""
|
||||
Verifies that the format value is within the correct range.
|
||||
@ -214,14 +181,14 @@ class DateDisplay:
|
||||
if mod == Date.MOD_SPAN:
|
||||
d1 = self.display_cal[cal](start)
|
||||
d2 = self.display_cal[cal](date.get_stop_date())
|
||||
return "from %s to %s%s" % (d1,d2,self._calendar[cal])
|
||||
return "from %s to %s%s" % (d1,d2,self.calendar[cal])
|
||||
elif mod == Date.MOD_RANGE:
|
||||
d1 = self.display_cal[cal](start)
|
||||
d2 = self.display_cal[cal](date.get_stop_date())
|
||||
return "between %s and %s%s" % (d1,d2,self._calendar[cal])
|
||||
return "between %s and %s%s" % (d1,d2,self.calendar[cal])
|
||||
else:
|
||||
text = self.display_cal[date.get_calendar()](start)
|
||||
return "%s%s%s" % (self._mod_str[mod],text,self._calendar[cal])
|
||||
return "%s%s%s" % (self._mod_str[mod],text,self.calendar[cal])
|
||||
|
||||
def _slash_year(self,val,slash):
|
||||
if slash:
|
||||
|
@ -28,7 +28,6 @@ def create_parser():
|
||||
try:
|
||||
return _lang_to_parser[_lang]()
|
||||
except:
|
||||
print "not found"
|
||||
return DateParser.DateParser()
|
||||
|
||||
def create_display():
|
||||
|
@ -28,39 +28,47 @@ __version__ = "$Revision$"
|
||||
|
||||
import string
|
||||
import re
|
||||
import time
|
||||
import locale
|
||||
|
||||
import Date
|
||||
|
||||
|
||||
class DateParser:
|
||||
"""
|
||||
Converts a text string into a Date object. If the date cannot be
|
||||
converted, the text string is assigned.
|
||||
"""
|
||||
|
||||
# determine the code set returned by nl_langinfo
|
||||
_codeset = locale.nl_langinfo(locale.CODESET)
|
||||
|
||||
month_to_int = {
|
||||
'jan' : 1,
|
||||
'january' : 1,
|
||||
'feb' : 2,
|
||||
'february' : 2,
|
||||
'mar' : 3,
|
||||
'march' : 3,
|
||||
'apr' : 4,
|
||||
'april' : 4,
|
||||
'may' : 5,
|
||||
'june' : 6,
|
||||
'jun' : 6,
|
||||
'july' : 7,
|
||||
'jul' : 7,
|
||||
'august' : 8,
|
||||
'aug' : 8,
|
||||
'september': 9,
|
||||
'sep' : 9,
|
||||
'sept' : 9,
|
||||
'oct' : 10,
|
||||
'october' : 10,
|
||||
'nov' : 11,
|
||||
'november' : 11,
|
||||
'dec' : 12,
|
||||
'december' : 12,
|
||||
}
|
||||
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.MON_2),_codeset).lower() : 2,
|
||||
unicode(locale.nl_langinfo(locale.ABMON_2),_codeset).lower() : 2,
|
||||
unicode(locale.nl_langinfo(locale.MON_3),_codeset).lower() : 3,
|
||||
unicode(locale.nl_langinfo(locale.ABMON_3),_codeset).lower() : 3,
|
||||
unicode(locale.nl_langinfo(locale.MON_4),_codeset).lower() : 4,
|
||||
unicode(locale.nl_langinfo(locale.ABMON_4),_codeset).lower() : 4,
|
||||
unicode(locale.nl_langinfo(locale.MON_5),_codeset).lower() : 5,
|
||||
unicode(locale.nl_langinfo(locale.ABMON_5),_codeset).lower() : 5,
|
||||
unicode(locale.nl_langinfo(locale.MON_6),_codeset).lower() : 6,
|
||||
unicode(locale.nl_langinfo(locale.ABMON_6),_codeset).lower() : 6,
|
||||
unicode(locale.nl_langinfo(locale.MON_7),_codeset).lower() : 7,
|
||||
unicode(locale.nl_langinfo(locale.ABMON_7),_codeset).lower() : 7,
|
||||
unicode(locale.nl_langinfo(locale.MON_8),_codeset).lower() : 8,
|
||||
unicode(locale.nl_langinfo(locale.ABMON_8),_codeset).lower() : 8,
|
||||
unicode(locale.nl_langinfo(locale.MON_9),_codeset).lower() : 9,
|
||||
unicode(locale.nl_langinfo(locale.ABMON_9),_codeset).lower() : 9,
|
||||
unicode(locale.nl_langinfo(locale.MON_10),_codeset).lower() : 10,
|
||||
unicode(locale.nl_langinfo(locale.ABMON_10),_codeset).lower(): 10,
|
||||
unicode(locale.nl_langinfo(locale.MON_11),_codeset).lower() : 11,
|
||||
unicode(locale.nl_langinfo(locale.ABMON_11),_codeset).lower(): 11,
|
||||
unicode(locale.nl_langinfo(locale.MON_12),_codeset).lower() : 12,
|
||||
unicode(locale.nl_langinfo(locale.ABMON_12),_codeset).lower(): 12,
|
||||
}
|
||||
|
||||
modifier_to_int = {
|
||||
'before' : Date.MOD_BEFORE,
|
||||
@ -86,6 +94,12 @@ class DateParser:
|
||||
'calculated' : Date.QUAL_CALCULATED,
|
||||
}
|
||||
|
||||
_qual_str = '(' + '|'.join(
|
||||
[ key.replace('.','\.') for key in quality_to_int.keys() ]
|
||||
) + ')'
|
||||
_mod_str = '(' + '|'.join(
|
||||
[ key.replace('.','\.') for key in modifier_to_int.keys() ]
|
||||
) + ')'
|
||||
_qual_str = '(' + string.join(quality_to_int.keys(),'|') + ')'
|
||||
_mod_str = '(' + string.join(modifier_to_int.keys(),'|') + ')'
|
||||
_mon_str = '(' + string.join(month_to_int.keys(),'|') + ')'
|
||||
@ -113,6 +127,12 @@ class DateParser:
|
||||
"""
|
||||
Converts only the date portion of a date.
|
||||
"""
|
||||
try:
|
||||
value = time.strptime(text)
|
||||
return (value[2],value[1],value[0],False)
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
match = self._text.match(text)
|
||||
if match:
|
||||
groups = match.groups()
|
||||
@ -185,7 +205,6 @@ class DateParser:
|
||||
grps = match.groups()
|
||||
start = self._parse_subdate(grps[0])
|
||||
stop = self._parse_subdate(grps[1])
|
||||
date.set_modifier(Date.MOD_SPAN)
|
||||
date.set(qual,Date.MOD_SPAN,Date.CAL_GREGORIAN,start + stop)
|
||||
return
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user