diff options
Diffstat (limited to 'HsBot/Base/State.hs')
| -rw-r--r-- | HsBot/Base/State.hs | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/HsBot/Base/State.hs b/HsBot/Base/State.hs new file mode 100644 index 0000000..abcf479 --- /dev/null +++ b/HsBot/Base/State.hs @@ -0,0 +1,32 @@ +module HsBot.Base.State where + +import qualified Data.Map as M + +import List +import HsBot.IRC.User + +data State = State { + currentChannel :: String, + line :: String, + users :: [User] + } deriving (Show, Read) + +stateNumUsers :: State -> Int +stateNumUsers state = length $ users state + +stateSortedUsers :: State -> [User] +stateSortedUsers state = sort $ users state + +stateLoad :: String -> IO State +stateLoad databaseFile = do + file <- readFile databaseFile + return ( read file :: State ) + +stateSave :: String -> State -> IO () +stateSave databaseFile = writeFile databaseFile . show + +stateSaveIO :: String -> IO State -> IO () +stateSaveIO databaseFile state = do + state' <- state + writeFile databaseFile (show state') + |
