aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorSean Whitton <spwhitton@spwhitton.name>2015-03-29 17:38:38 +0900
committerSean Whitton <spwhitton@spwhitton.name>2015-03-29 17:38:38 +0900
commit8818b695b2b960fd8f26cff5b0511515b62067fe (patch)
treed886e69f4a7b08a72b0e39f462b7e057034f541d
parentc57cc5e3b3e1cd32a5204ab677a4ca1331e32d39 (diff)
downloadsrem-8818b695b2b960fd8f26cff5b0511515b62067fe.tar.gz
staggered reminder text has time of event
Rather than time of reminder
-rw-r--r--src/Types/Reminder.hs33
-rw-r--r--src/Utility/Emacs.hs2
2 files changed, 26 insertions, 9 deletions
diff --git a/src/Types/Reminder.hs b/src/Types/Reminder.hs
index 5a1f7a5..314f880 100644
--- a/src/Types/Reminder.hs
+++ b/src/Types/Reminder.hs
@@ -1,5 +1,6 @@
module Types.Reminder ( Reminder
, makeReminder
+ , makeReminder'
, getReminderHour
, getReminderMinute
, getReminderText
@@ -15,14 +16,30 @@ data Reminder = Reminder { getReminderHour :: Hour
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"
+ "reminder at " ++ niceTime h m ++ ": " ++ s
+
+-- | Maybe makes a reminder for an event, prepending a human-readable
+-- time to the event description.
+makeReminder :: Hour -- ^ Clock hour-hand time of event
+ -> Minute -- ^ Clock minute-hand time of the event
+ -> String -- ^ Event description
+ -> Maybe Reminder -- ^ Maybe a reminder
+makeReminder h m s = makeReminder' h m (niceTime h m ++ " " ++ s)
+
+-- | Maybe makes a reminder for an event. Unlike 'makeReminder',
+-- doesn't prepend anything to the event description.
+makeReminder' :: Hour -- ^ Clock hour-hand time of event
+ -> Minute -- ^ Clock minute-hand time of the event
+ -> String -- ^ Event description
+ -> Maybe Reminder -- ^ Maybe a reminder
+makeReminder' h m s = if h `elem` [0..23] && m `elem` [0..59]
+ then return $ Reminder h m s
+ else fail "invalid reminder"
+
+niceTime :: Hour -> Minute -> String
+niceTime h m = (show . to12Hour) h
+ ++ ":" ++ (zeroPadTime . show) m
+ ++ amPm h
zeroPadTime :: String -> String
zeroPadTime t = if length t < 2
diff --git a/src/Utility/Emacs.hs b/src/Utility/Emacs.hs
index 34a7ca7..f42ea0c 100644
--- a/src/Utility/Emacs.hs
+++ b/src/Utility/Emacs.hs
@@ -37,7 +37,7 @@ staggeredReminders :: Reminder -> Maybe [Reminder]
staggeredReminders r = sequence $ foldr step [] SremConfig.intervals
where
step minsBefore rems =
- makeReminder (h minsBefore) (m minsBefore) (getReminderText r) : rems
+ makeReminder' (h minsBefore) (m minsBefore) (getReminderText r) : rems
h m = if m > getReminderMinute r
then getReminderHour r - 1
else getReminderHour r