Method: calendar.TextCalendar.formatyear
Calls: 5, Exceptions: 0, Paths: 1Back
Path 1: 5 calls (1.0)
2004 (3) 0 (2)
2 (4) 0 (1)
1 (4) 0 (1)
6 (5)
3 (5)
' 2004\n\n January February March\nMo Tu We Th Fr Sa Su Mo Tu We Th Fr ...
1def formatyear(self, theyear, w=2, l=1, c=6, m=3):
2 """
3 Returns a year's calendar as a multi-line string.
4 """
5 w = max(2, w)
6 l = max(1, l)
7 c = max(2, c)
8 colwidth = (w + 1) * 7 - 1
9 v = []
10 a = v.append
11 a(repr(theyear).center(colwidth*m+c*(m-1)).rstrip())
12 a('\n'*l)
13 header = self.formatweekheader(w)
14 for (i, row) in enumerate(self.yeardays2calendar(theyear, m)):
15 # months in this row
16 months = range(m*i+1, min(m*(i+1)+1, 13))
17 a('\n'*l)
18 names = (self.formatmonthname(theyear, k, colwidth, False)
19 for k in months)
20 a(formatstring(names, colwidth, c).rstrip())
21 a('\n'*l)
22 headers = (header for k in months)
23 a(formatstring(headers, colwidth, c).rstrip())
24 a('\n'*l)
25 # max number of weeks for this row
26 height = max(len(cal) for cal in row)
27 for j in range(height):
28 weeks = []
29 for cal in row:
30 if j >= len(cal):
31 weeks.append('')
32 else:
33 weeks.append(self.formatweek(cal[j], w))
34 a(formatstring(weeks, colwidth, c).rstrip())
35 a('\n' * l)
36 return ''.join(v)