summaryrefslogtreecommitdiff
path: root/HsBot/Base/State.hs
diff options
context:
space:
mode:
Diffstat (limited to 'HsBot/Base/State.hs')
-rw-r--r--HsBot/Base/State.hs32
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')
+