-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathformatter.py
48 lines (40 loc) · 1.54 KB
/
formatter.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
from datetime import datetime
from datetime import time
from datetime import timedelta
import config
def format_delta(td):
if type(td) is not timedelta:
return ''
if td < timedelta(0):
return '-' + format_delta(-td)
s = int(td.total_seconds())
hours, remainder = divmod(s, 3600)
minutes, seconds = divmod(remainder, 60)
minutes = str(minutes).zfill(2)
return '' + '%s:%s' % (hours, minutes)
def format_time(t):
if type(t) is timedelta:
t = (datetime.min + t).time()
if type(t) is time:
t = datetime(2000, 1, 1, t.hour, t.minute)
return datetime.strftime(t, "%-H:%M")
def format_category(category):
if category in config.categories():
return config.categories()[category]
else:
return category.title().replace('_', ' ')
def format_category_percentages(totalTime: timedelta, categorytimes: dict[str, timedelta]):
result = ""
for category, worked in categorytimes.items():
result += format_category(category) + ": "
result += format_percentage(totalTime, worked) + '\n'
return result
def format_category_total_and_percentages(totalTime: timedelta, categorytimes: dict[str, timedelta]):
result = ""
for category, worked in categorytimes.items():
result += format_category(category) + ": "
result += format_delta(worked) + " "
result += "(" + format_percentage(totalTime, worked) + ')\n'
return result
def format_percentage(full, partial):
return str(round((partial / full) * 100, 1)) + "%"