]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
make _localized_name instances work more like the tuples they replaced. In
authorSkip Montanaro <skip@pobox.com>
Fri, 15 Mar 2002 04:08:38 +0000 (04:08 +0000)
committerSkip Montanaro <skip@pobox.com>
Fri, 15 Mar 2002 04:08:38 +0000 (04:08 +0000)
particular, negative indexes work and they are limited by the actual length
of the names they represent (weekday and month names).  This closes bug
#503202.

Lib/calendar.py

index 0fc60bea56deadcb17922b8c634b906ca22a0360..477f59553ed51960a974195486683caad8d7f20b 100644 (file)
@@ -25,18 +25,25 @@ February = 2
 mdays = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
 
 class _localized_name:
-    def __init__(self, format):
+    def __init__(self, format, len):
         self.format = format
+        self.len = len
     def __getitem__(self, item):
+        if item > self.len-1 or item < -self.len:
+            raise IndexError
+        if item < 0:
+            item += self.len
         return strftime(self.format, (item,)*9).capitalize()
+    def __len__(self):
+        return self.len
 
 # Full and abbreviated names of weekdays
-day_name = _localized_name('%A')
-day_abbr = _localized_name('%a')
+day_name = _localized_name('%A', 7)
+day_abbr = _localized_name('%a', 7)
 
 # Full and abbreviated names of months (1-based arrays!!!)
-month_name = _localized_name('%B')
-month_abbr = _localized_name('%b')
+month_name = _localized_name('%B', 12)
+month_abbr = _localized_name('%b', 12)
 
 # Constants for weekdays
 (MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY) = range(7)