blob: 5a1f7a5014ec81a5713d1a16d9c944d17efa7ed9 (
plain)
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
|
module Types.Reminder ( Reminder
, makeReminder
, getReminderHour
, getReminderMinute
, getReminderText
) where
type Hour = Int
type Minute = Int
data Reminder = Reminder { getReminderHour :: Hour
, getReminderMinute :: Minute
, getReminderText :: String}
deriving (Eq, Ord)
instance Show Reminder where
show (Reminder h m s) =
(show . to12Hour) h
++ ":" ++ (zeroPadTime . show) m
++ amPm h ++ " " ++ s
makeReminder :: Hour -> Minute -> String -> Maybe Reminder
makeReminder h m s = if h `elem` [0..23] && m `elem` [0..59]
then return $ Reminder h m s
else fail "invalid reminder"
zeroPadTime :: String -> String
zeroPadTime t = if length t < 2
then '0' : t
else t
to12Hour :: Int -> Int
to12Hour h = if h > 12
then h - 12
else h
amPm :: Int -> String
amPm h = if h > 12
then "pm"
else "am"
|