From 7fa6579581b6734595b0d028056998b1c96f4af4 Mon Sep 17 00:00:00 2001 From: Sean Whitton Date: Sun, 5 Apr 2015 20:26:19 +0900 Subject: timetable reminders functionality for school --- src/Main.hs | 2 +- src/Utility/EventCache.hs | 19 ++++++++++++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/Main.hs b/src/Main.hs index 21388f6..9e43724 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -37,7 +37,7 @@ import Utility.Notify doCron :: IO () doCron = do purgeOldEventCaches - rems <- (++) <$> readEmacsEventCache <*> readManualEventCache + rems <- (++) <$> readEmacsEventCache <*> ((++) <$> readManualEventCache <*> getTimetableReminders) (h, m, _) <- localHMD let nowRemsFilter r = getReminderHour r == h && getReminderMinute r == m diff --git a/src/Utility/EventCache.hs b/src/Utility/EventCache.hs index a5835db..000a3cd 100644 --- a/src/Utility/EventCache.hs +++ b/src/Utility/EventCache.hs @@ -26,19 +26,25 @@ module Utility.EventCache ( purgeOldEventCaches , refreshEmacsEventCache , readEmacsEventCache , readManualEventCache + , getTimetableReminders ) where import Control.Applicative ((<$>)) import Control.Exception (IOException, catch) import Control.Monad (filterM, forM_, when) import qualified Control.SremConfig as SremConfig -import Data.List.Split (splitOn, splitOneOf) +import Data.Char (toLower) import Data.Maybe.Read import Data.Time.Calendar +import Data.Time.Format import Data.Time.LocalTime import System.Directory (createDirectoryIfMissing, doesFileExist, getDirectoryContents, removeFile) import System.FilePath (()) +import System.Locale (defaultTimeLocale) + +import Data.List.Split (splitOn, splitOneOf) + import Types.Reminder import Utility.Emacs @@ -94,6 +100,17 @@ readManualEventCache = do then readEventsCSV path else return [] +getTimetableReminders :: IO [Reminder] +getTimetableReminders = do + dayOfWeek <- map toLower . formatTime defaultTimeLocale "%A" + . localDay . zonedTimeToLocalTime <$> getZonedTime + dir <- SremConfig.getCacheDirectory + let path = dir dayOfWeek ++ ".csv" + exists <- doesFileExist path + if exists + then readEventsCSV path + else return [] + -- #### Internal functions readEventsCSV :: FilePath -> IO [Reminder] -- cgit v1.2.3