11import calendar
22import argparse
3+ import sys
34from datetime import datetime
45
56# Setting calendar start day
1617
1718if args .month :
1819 if args .month not in [str (month_number ) for month_number in list (range (1 ,13 ))]:
19- cal_month = list (calendar .month_name ).index (args .month )
20+ try :
21+ cal_month = list (calendar .month_name ).index (args .month .capitalize ())
22+ except :
23+ print (f"Enter appropriate month number or full name!\n cal: error: argument -m/--month: invalid entry: '{ args .month } '" )
24+ sys .exit ()
2025 else :
2126 cal_month = int (args .month )
2227
@@ -29,6 +34,7 @@ def formatday(self, day, weekday, width):
2934 return f'\033 [7m{ day :>{width }} \033 [m'
3035 return f'{ day :>{width }} '
3136
37+ # Function to print month calendar
3238def cal (month = None , year = None ):
3339 if not month :
3440 month = datetime .now ().month
@@ -37,6 +43,7 @@ def cal(month=None, year=None):
3743 cal = CustomCalendar (calendar .SUNDAY )
3844 print (cal .formatmonth (year , month ))
3945
46+ # Function to print full year calendar
4047def print_calendar (year : int ):
4148 cal = calendar .TextCalendar (calendar .SUNDAY )
4249 today = datetime .now ()
@@ -53,7 +60,7 @@ def print_calendar(year: int):
5360 if len (days ) > 0 :
5461 if i == 2 and len (days ) < 7 :
5562 days = [' ' ] * (7 - len (days )) + days
56- elif i == len (month_str ) - 2 and len (days ) < 7 :
63+ elif ( i == len (month_str )- 2 ) and ( len (days ) < 7 ) :
5764 days += [' ' ] * (7 - len (days ))
5865 for j in range (len (days )):
5966 if days [j ].strip ():
@@ -71,7 +78,13 @@ def print_calendar(year: int):
7178 quarter_str [- 1 ] = ' ' * (40 if s_no == 2 else 20 ) + quarter_str [- 1 ]
7279 quarter_str .append (' ' + month_str [i ])
7380 else :
74- quarter_str [i ] += ' ' + month_str [i ]
81+ if i != (len (month_str )- 1 ):
82+ quarter_str [i ] += ' ' + month_str [i ]
83+ else :
84+ if len (month_str ) >= len (quarter_str ):
85+ quarter_str [i ] += ' ' + month_str [i ]
86+ else :
87+ quarter_str [i ] += 20 * ' ' + ' ' + month_str [i ]
7588 print ('\n ' .join (quarter_str ))
7689
7790# Code to determine the calendar to print out
0 commit comments