diff options
author | Sean Whitton <spwhitton@spwhitton.name> | 2015-03-30 17:56:58 +0900 |
---|---|---|
committer | Sean Whitton <spwhitton@spwhitton.name> | 2015-03-30 17:57:31 +0900 |
commit | 84bd15607d50636a5fe8fe74bb1ade43a423ae59 (patch) | |
tree | 38935d960598ee8f9cff5ed030198b8493e0c4ac | |
parent | d3763e664f385059940ec6da1fb9f823a7cf6048 (diff) | |
download | srem-84bd15607d50636a5fe8fe74bb1ade43a423ae59.tar.gz |
start code to handle CSV files containing events
-rw-r--r-- | src/Utility/EventCache.hs | 59 | ||||
-rw-r--r-- | srem.cabal | 1 |
2 files changed, 60 insertions, 0 deletions
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 @@ -17,6 +17,7 @@ executable srem , process , regex-posix , modular-arithmetic + , time , filepath hs-source-dirs: src default-language: Haskell2010 |