summaryrefslogtreecommitdiff
path: root/HsBot/IRC
diff options
context:
space:
mode:
Diffstat (limited to 'HsBot/IRC')
-rw-r--r--HsBot/IRC/User.hs12
1 files changed, 11 insertions, 1 deletions
diff --git a/HsBot/IRC/User.hs b/HsBot/IRC/User.hs
index 2569043..3c9bb3b 100644
--- a/HsBot/IRC/User.hs
+++ b/HsBot/IRC/User.hs
@@ -41,9 +41,19 @@ userGetIfExists name (x:xs)
| userName x == name = Just x
| otherwise = userGetIfExists name xs
+userDeleteIfExists :: String -> [User] -> [User]
+userDeleteIfExists name [] = []
+userDeleteIfExists name (x:xs)
+ | userName x == name = xs
+ | otherwise = x : userDeleteIfExists name xs
+
userGet :: String -> [User] -> (User, [User])
userGet name xs =
case userGetIfExists name xs of
- Just user -> (user, xs)
+ Just user -> (user, user : xs)
Nothing -> let user = userMakeDefault name in (user, user : xs)
+usersUpdate :: String -> [User] -> (User -> User) -> [User]
+usersUpdate name xs update =
+ let (user, _) = userGet name xs
+ in (update user) : (userDeleteIfExists name xs)