From 6850159bf998a209ad7b6d7103d113a54659937e Mon Sep 17 00:00:00 2001 From: Joris Date: Sat, 21 Nov 2015 17:32:28 +0100 Subject: Add filter birthday between function --- src/Birthdate.hs | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'src/Birthdate.hs') diff --git a/src/Birthdate.hs b/src/Birthdate.hs index c9d0bda..48d3a4e 100644 --- a/src/Birthdate.hs +++ b/src/Birthdate.hs @@ -4,13 +4,13 @@ module Birthdate ( Birthdate(..) , fullname , age - , filterBirthday + , filterBirthdayAt ) where import Data.Text (Text) import qualified Data.Text as T -import Date (Date, sameDayAndMonth, yearsGap) +import Date data Birthdate = Birthdate { date :: Date @@ -24,5 +24,14 @@ fullname d = T.concat [firstname d, " ", lastname d] age :: Date -> Birthdate -> Int age currentDate birthdate = yearsGap currentDate (date birthdate) -filterBirthday :: Date -> [Birthdate] -> [Birthdate] -filterBirthday d = filter (sameDayAndMonth d . date) +filterBirthdayAt :: Date -> [Birthdate] -> [Birthdate] +filterBirthdayAt d = filter (sameDayAndMonth d . date) + +filterBirthdayBetween :: Date -> Date -> [Birthdate] -> [Birthdate] +filterBirthdayBetween begin end = + filter (\bd -> + let d = date bd + in ( d `isAfterOrEqualDayAndMonth` begin + && d `isBeforeOrEqualDayAndMonth` end + ) + ) -- cgit v1.2.3