diff options
Diffstat (limited to 'src/Utils/ScoresFile.hs')
-rw-r--r-- | src/Utils/ScoresFile.hs | 51 |
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) |