@@ -24,41 +24,52 @@ def duration(match):
24
24
END = "\033 [0m"
25
25
26
26
day_total_duration = timedelta ()
27
+ weekly_total_duration = timedelta ()
27
28
day_tasks = []
28
29
output = []
29
30
30
31
for line in lines :
31
32
is_day_line = re .match (r'^\s*•\s*(\w+day)' , line )
32
33
if is_day_line :
33
34
if day_tasks :
34
- day_tasks [0 ] += f' Total: { day_total_duration .total_seconds () / 3600 :.2f} '
35
- output .append ('\n ' .join (day_tasks ) + '\n ' )
35
+ day_total_in_hours = day_total_duration .total_seconds () / 3600
36
+ day_tasks [0 ] = day_tasks [0 ].rstrip () + f' Total: { day_total_in_hours :.2f} hours'
37
+ output .append ('\n ' .join (day_tasks ))
38
+ weekly_total_duration += day_total_duration
36
39
day_tasks = []
40
+ day_total_duration = timedelta ()
37
41
38
42
day = re .sub (r'^\s*•\s*(\w+day)' , r'\1' , line )
39
43
day = re .sub (r'(\w+day)' , BOLD + UNDERLINE + r'\1' + END , day )
44
+ output .append ('' )
40
45
day_tasks .append (day )
41
- day_total_duration = timedelta ()
42
46
else :
43
47
timespans = re .finditer (pattern , line )
44
48
total_duration = timedelta ()
45
49
for timespan in timespans :
46
- total_duration += duration (timespan )
47
- day_total_duration += duration (timespan )
50
+ span_duration = duration (timespan )
51
+ total_duration += span_duration
52
+ day_total_duration += span_duration
48
53
49
54
total_duration_hours = total_duration .total_seconds () / 3600
50
55
total_duration_hours = "{:.2f}" .format (total_duration_hours )
51
56
52
57
if re .search (pattern , line ):
53
- # Remove times and trailing commas
54
58
task = re .sub (pattern + ',?' , '' , line ).strip ()
55
- task = re .sub (r'^\s*o\s*' , '\t • ' , task )
59
+ task = re .sub (r'^\s*o\s*' , '• ' , task )
56
60
task += f" { total_duration_hours } "
57
61
day_tasks .append (task )
58
62
59
63
if day_tasks :
60
- day_tasks [0 ] += f' Total: { day_total_duration .total_seconds () / 3600 :.2f} '
61
- output .append ('\n ' .join (day_tasks ) + '\n ' )
64
+ day_total_in_hours = day_total_duration .total_seconds () / 3600
65
+ total_string = f'Total: { day_total_in_hours :.2f} hours'
66
+ day_string = day_tasks [0 ].ljust (20 ) # Adjust the number as needed
67
+ day_tasks [0 ] = day_string + total_string
68
+ output .append ('\n ' .join (day_tasks ))
69
+ weekly_total_duration += day_total_duration
70
+
71
+ weekly_total_hours = weekly_total_duration .total_seconds () / 3600
72
+ output .append (f'\n Weekly Total: { weekly_total_hours :.2f} hours' )
62
73
63
74
result = '\n ' .join (output )
64
75
return result
0 commit comments