From 84bd15607d50636a5fe8fe74bb1ade43a423ae59 Mon Sep 17 00:00:00 2001 From: Sean Whitton Date: Mon, 30 Mar 2015 17:56:58 +0900 Subject: start code to handle CSV files containing events --- src/Utility/EventCache.hs | 59 +++++++++++++++++++++++++++++++++++++++++++++++ srem.cabal | 1 + 2 files changed, 60 insertions(+) create mode 100644 src/Utility/EventCache.hs diff --git a/src/Utility/EventCache.hs b/src/Utility/EventCache.hs new file mode 100644 index 0000000..6471a0f --- /dev/null +++ b/src/Utility/EventCache.hs @@ -0,0 +1,59 @@ +module EventCache ( purgeOldEventCaches + , appendManualEventCache + , readEmacsEventCache + , readManualEventCache + ) where + +import Control.Applicative ((<$>)) +import qualified Control.SremConfig as SremConfig +import Data.Time.Calendar +import Data.Time.Clock +import System.Directory (doesFileExist) +import System.FilePath (()) +import Types.Reminder +import Utility.Emacs + +purgeOldEventCaches :: IO [Reminder] +purgeOldEventCaches = undefined + +appendManualEventCache :: IO () +appendManualEventCache = do + date <- cacheFileDateString + dir <- SremConfig.getCacheDirectory + let path = dir "manual_" ++ date ++ ".csv" + undefined + +readEmacsEventCache :: IO [Reminder] +readEmacsEventCache = do + date <- cacheFileDateString + dir <- SremConfig.getCacheDirectory + let path = dir "emacs_" ++ date ++ ".csv" + doesFileExist path >>= \alreadyThere -> + if alreadyThere + then readEventsCSV path + else do + rems <- parseEmacsOutput <$> getEmacsOutput + writeFile path $ makeEventsCSV rems + return rems + +readManualEventCache :: IO [Reminder] +readManualEventCache = do + date <- cacheFileDateString + dir <- SremConfig.getCacheDirectory + let path = dir "manual_" ++ date ++ ".csv" + undefined + +readEventsCSV :: FilePath -> IO [Reminder] +readEventsCSV = undefined + +parseEventsCSV :: String -> [Reminder] +parseEventsCSV = undefined + +makeEventsCSV :: [Reminder] -> String +makeEventsCSV = undefined + +cacheFileDateString :: IO String +cacheFileDateString = showGregorian . utctDay <$> getCurrentTime + +-- getEventCacheLock :: IO [Reminder] +-- getEventCacheLock = undefined diff --git a/srem.cabal b/srem.cabal index 6a6654a..371a881 100644 --- a/srem.cabal +++ b/srem.cabal @@ -17,6 +17,7 @@ executable srem , process , regex-posix , modular-arithmetic + , time , filepath hs-source-dirs: src default-language: Haskell2010 -- cgit v1.2.3