aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorSean Whitton <spwhitton@spwhitton.name>2015-03-30 17:56:58 +0900
committerSean Whitton <spwhitton@spwhitton.name>2015-03-30 17:57:31 +0900
commit84bd15607d50636a5fe8fe74bb1ade43a423ae59 (patch)
tree38935d960598ee8f9cff5ed030198b8493e0c4ac
parentd3763e664f385059940ec6da1fb9f823a7cf6048 (diff)
downloadsrem-84bd15607d50636a5fe8fe74bb1ade43a423ae59.tar.gz
start code to handle CSV files containing events
-rw-r--r--src/Utility/EventCache.hs59
-rw-r--r--srem.cabal1
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
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