diff options
Diffstat (limited to 'HsBot/IRC')
| -rw-r--r-- | HsBot/IRC/User.hs | 12 |
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) |
