From da8047d286d8d4d8ea5a0e7ef41c4f02d8b4149d Mon Sep 17 00:00:00 2001 From: Simon Michael Date: Tue, 24 Jul 2018 14:24:45 +0100 Subject: [PATCH] lib: type signatures --- hledger-lib/Hledger/Data/Dates.hs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/hledger-lib/Hledger/Data/Dates.hs b/hledger-lib/Hledger/Data/Dates.hs index dd34898a3..e54795ca3 100644 --- a/hledger-lib/Hledger/Data/Dates.hs +++ b/hledger-lib/Hledger/Data/Dates.hs @@ -545,6 +545,7 @@ startofyear day = fromGregorian y 1 1 where (y,_,_) = toGregorian day -- 2016-12-31 -- >>> nthdayofyearcontaining 1 1 wed22nd -- 2017-01-01 +nthdayofyearcontaining :: Month -> MonthDay -> Day -> Day nthdayofyearcontaining m n d | mmddOfSameYear <= d = mmddOfSameYear | otherwise = mmddOfPrevYear where mmddOfSameYear = addDays (fromIntegral n-1) $ applyN (m-1) nextmonth s @@ -568,6 +569,7 @@ nthdayofyearcontaining m n d | mmddOfSameYear <= d = mmddOfSameYear -- 2017-10-23 -- >>> nthdayofmonthcontaining 30 wed22nd -- 2017-10-30 +nthdayofmonthcontaining :: MonthDay -> Day -> Day nthdayofmonthcontaining n d | nthOfSameMonth <= d = nthOfSameMonth | otherwise = nthOfPrevMonth where nthOfSameMonth = nthdayofmonth n s @@ -591,6 +593,7 @@ nthdayofmonthcontaining n d | nthOfSameMonth <= d = nthOfSameMonth -- 2017-11-16 -- >>> nthdayofweekcontaining 5 wed22nd -- 2017-11-17 +nthdayofweekcontaining :: WeekDay -> Day -> Day nthdayofweekcontaining n d | nthOfSameWeek <= d = nthOfSameWeek | otherwise = nthOfPrevWeek where nthOfSameWeek = addDays (fromIntegral n-1) s @@ -614,12 +617,14 @@ nthdayofweekcontaining n d | nthOfSameWeek <= d = nthOfSameWeek -- 2017-10-26 -- >>> nthweekdayofmonthcontaining 4 5 wed22nd -- 2017-10-27 +nthweekdayofmonthcontaining :: Int -> WeekDay -> Day -> Day nthweekdayofmonthcontaining n wd d | nthWeekdaySameMonth <= d = nthWeekdaySameMonth | otherwise = nthWeekdayPrevMonth where nthWeekdaySameMonth = advancetonthweekday n wd $ startofmonth d nthWeekdayPrevMonth = advancetonthweekday n wd $ prevmonth d - + -- | Advance to nth weekday wd after given start day s +advancetonthweekday :: Int -> WeekDay -> Day -> Day advancetonthweekday n wd s = addWeeks (n-1) . firstMatch (>=s) . iterate (addWeeks 1) $ firstweekday s where addWeeks k = addDays (7 * fromIntegral k)