diff options
author | Christian Geier <geier@lostpackets.de> | 2017-03-10 18:10:50 +0100 |
---|---|---|
committer | Christian Geier <geier@lostpackets.de> | 2017-03-10 20:17:33 +0100 |
commit | 7dd25535d74934f13d23c486c8b950864aafd8c2 (patch) | |
tree | b3d0693448945bd1051b5a0a9709c6afca59d82b | |
parent | dce6432c21418b9a335e117926fe28ee9d711c6a (diff) |
NEW: get_weekday_occurrence().
-rw-r--r-- | khal/utils.py | 11 | ||||
-rw-r--r-- | tests/utils_test.py | 22 |
2 files changed, 33 insertions, 0 deletions
diff --git a/khal/utils.py b/khal/utils.py index eda364ab..11758c48 100644 --- a/khal/utils.py +++ b/khal/utils.py @@ -736,3 +736,14 @@ def color_wrap(text, width=70): if num != len(lines): lines[num + 1] = sgr + lines[num + 1] return lines + + +def get_weekday_occurrence(day): + """Calculate how often this weekday has already occurred in a given month. + + :type day: datetime.date + :returns: weekday (0=Monday, ..., 6=Sunday), occurrence + :rtype: tuple(int, int) + """ + xthday = 1 + (day.day - 1) // 7 + return day.weekday(), xthday diff --git a/tests/utils_test.py b/tests/utils_test.py index 296253e1..711277ac 100644 --- a/tests/utils_test.py +++ b/tests/utils_test.py @@ -9,6 +9,7 @@ from freezegun import freeze_time from khal.utils import guessdatetimefstr, guesstimedeltafstr, new_event, eventinfofstr from khal.utils import timedelta2str, guessrangefstr, weekdaypstr, construct_daynames +from khal.utils import get_weekday_occurrence from khal import utils from khal.exceptions import FatalError import pytest @@ -670,3 +671,24 @@ def test_color_wrap_256(): ] assert utils.color_wrap(text, 30) == expected + + +def test_get_weekday_occurrence(): + assert get_weekday_occurrence(datetime(2017, 3, 1)) == (2, 1) + assert get_weekday_occurrence(datetime(2017, 3, 2)) == (3, 1) + assert get_weekday_occurrence(datetime(2017, 3, 3)) == (4, 1) + assert get_weekday_occurrence(datetime(2017, 3, 4)) == (5, 1) + assert get_weekday_occurrence(datetime(2017, 3, 5)) == (6, 1) + assert get_weekday_occurrence(datetime(2017, 3, 6)) == (0, 1) + assert get_weekday_occurrence(datetime(2017, 3, 7)) == (1, 1) + assert get_weekday_occurrence(datetime(2017, 3, 8)) == (2, 2) + assert get_weekday_occurrence(datetime(2017, 3, 9)) == (3, 2) + assert get_weekday_occurrence(datetime(2017, 3, 10)) == (4, 2) + + assert get_weekday_occurrence(datetime(2017, 3, 31)) == (4, 5) + + assert get_weekday_occurrence(date(2017, 5, 1)) == (0, 1) + assert get_weekday_occurrence(date(2017, 5, 7)) == (6, 1) + assert get_weekday_occurrence(date(2017, 5, 8)) == (0, 2) + assert get_weekday_occurrence(date(2017, 5, 28)) == (6, 4) + assert get_weekday_occurrence(date(2017, 5, 29)) == (0, 5) |