aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/Utils/ScoresFile.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Utils/ScoresFile.hs')
-rw-r--r--src/Utils/ScoresFile.hs51
1 files changed, 24 insertions, 27 deletions
diff --git a/src/Utils/ScoresFile.hs b/src/Utils/ScoresFile.hs
index f981a4a..eac386c 100644
--- a/src/Utils/ScoresFile.hs
+++ b/src/Utils/ScoresFile.hs
@@ -14,7 +14,7 @@ import Control.Monad (liftM)
import Data.List.Split (splitOn)
import Data.Maybe (fromJust)
import System.FilePath ((</>))
--- import Control.Monad.SariulClocks
+import Control.Monad.SariulClocks
import Control.Monad.Trans (liftIO)
scoresToCSV :: ScoresList -> String
@@ -35,30 +35,27 @@ scoresFromCSV csv = foldr step [] (lines csv)
classString:scoreString:timeString:[] = splitOn "," line
theClass = fromJust $ lookupSariulClass ((read . (:[]) . head) classString) ((read . (:[]) . last) classString)
--- -- try to read from scores-XX.csv where XX is largest timestamp
--- readScoresFile :: SariulScoresMonad a => a (Maybe ScoresList)
--- readScoresFile = do
--- curDir <- liftIO getCurrentDirectory
--- let dataDir = curDir </> "data"
--- filenames <- liftM (reverse . sort . filter isCSV) $ liftIO $ getDirectoryContents dataDir
--- if null filenames
--- then return Nothing
--- else do
--- -- let scores = liftM scoresFromCSV $ liftIO $ readFile (dataDir </> head filenames)
--- scores <- liftIO $ scoresFromCSV <$> readFile (dataDir </> head filenames)
--- putScores scores
--- return $ Just scores
--- where isCSV path = takeExtension path == ".csv"
+-- try to read from scores-XX.csv where XX is largest timestamp
+readScoresFile :: SariulScoresMonad a => a (Maybe ScoresList)
+readScoresFile = do
+ curDir <- liftIO getCurrentDirectory
+ let dataDir = curDir </> "data"
+ filenames <- liftM (reverse . sort . filter isCSV) $ liftIO $ getDirectoryContents dataDir
+ if null filenames
+ then return Nothing
+ else do
+ -- let scores = liftM scoresFromCSV $ liftIO $ readFile (dataDir </> head filenames)
+ scores <- liftIO $ scoresFromCSV <$> readFile (dataDir </> head filenames)
+ putScores scores
+ return $ Just scores
+ where isCSV path = takeExtension path == ".csv"
--- -- writes to score-XX.csv where XX is unix timestamp: a simple-minded logging
--- writeScoresFile :: SariulScoresMonad a => a ()
--- writeScoresFile = do
--- scores <- getScores
--- curDir <- liftIO getCurrentDirectory
--- let dataDir = curDir </> "data"
--- timestamp <- liftM round $ liftIO getPOSIXTime
--- let filename = dataDir </> ("scores-" ++ show timestamp ++ ".csv")
--- liftIO $ writeFile filename (scoresToCSV scores)
-
-readScoresFile = undefined
-writeScoresFile = undefined
+-- writes to score-XX.csv where XX is unix timestamp: a simple-minded logging
+writeScoresFile :: SariulScoresMonad a => a ()
+writeScoresFile = do
+ scores <- getScores
+ curDir <- liftIO getCurrentDirectory
+ let dataDir = curDir </> "data"
+ timestamp <- liftM round $ liftIO getPOSIXTime
+ let filename = dataDir </> ("scores-" ++ show timestamp ++ ".csv")
+ liftIO $ writeFile filename (scoresToCSV scores)