aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/Utility/EventCache.hs11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/Utility/EventCache.hs b/src/Utility/EventCache.hs
index e97cc1b..c19e122 100644
--- a/src/Utility/EventCache.hs
+++ b/src/Utility/EventCache.hs
@@ -66,7 +66,16 @@ readEventsCSV :: FilePath -> IO [Reminder]
readEventsCSV f = readFile f >>= return . parseEventsCSV
parseEventsCSV :: String -> [Reminder]
-parseEventsCSV = undefined
+parseEventsCSV = foldr step [] . lines
+ where
+ step r rs = maybe rs (: rs) $ parseEventCSV r
+
+parseEventCSV :: String -> Maybe Reminder
+parseEventCSV line = do
+ hourString:minuteString:text:[] <- return $ splitOn "," line
+ hour <- readMaybe hourString
+ minute <- readMaybe minuteString
+ makeReminder' hour minute text
makeEventsCSV :: [Reminder] -> String
makeEventsCSV = unlines . foldr ((:) . makeEventCSV) []