packages feed

irc-fun-client 0.1.1.0 → 0.2.0.0

raw patch · 5 files changed

+46/−2 lines, 5 files

Files

NEWS view
@@ -3,6 +3,31 @@   +irc-fun-client 0.2.0.0 -- 2015-09-22+====================================++General, build and documentation changes:++* (None)++New APIs, features and enhancements:++* New event constructor, NickChange+* Channel logger can log nick changes+* New nickname tracker function, changeNick++Bug fixes:++* (None)++Dependency changes:++* (None)+++++ irc-fun-client 0.1.1.0 -- 2015-09-10 ==================================== 
irc-fun-client.cabal view
@@ -1,5 +1,5 @@ name:                irc-fun-client-version:             0.1.1.0+version:             0.2.0.0 synopsis:            Another library for writing IRC clients. description:   This is an IRC client library that uses @irc-fun-messages@ library package
src/Network/IRC/Fun/Client/ChannelLogger.hs view
@@ -113,4 +113,5 @@     Part chan nick _reason               -> Just $ Leave nick chan     Quit nick _reason                    -> Just $ LeaveAll nick     ChannelMessage chan nick msg _notice -> Just $ Message nick chan msg+    NickChange old new                   -> Just $ Rename old new     _                                    -> Nothing
src/Network/IRC/Fun/Client/Events.hs view
@@ -61,6 +61,8 @@     -- yes, the client shouldn't send any automatic response. Parameters:     -- Nickname, message, whether notice.     | PrivateMessage String String Bool+    -- | A user's nickname has changed. Parameters: Old nick, new nick.+    | NickChange String String     -- | Channel topic change. Parameterss: Channel, nickname of user who     -- changed the topic, new topic content.     | Topic String String String@@ -79,6 +81,10 @@ detectMessageEvents :: SpecificMessage -> Either String [Event] detectMessageEvents sm@(SpecificMessage mpref msg) =     case msg of+        NickMessage newnick                        ->+            if null sender+                then err+                else one $ NickChange sender newnick         QuitMessage reason                         ->             if null sender                 then err
src/Network/IRC/Fun/Client/NickTracker.hs view
@@ -14,7 +14,7 @@  -}  -- | Using the tools provided here, you can track which users are members of--- which channels. This functionality has a veriety of uses, e.g. displaying+-- which channels. This functionality has a variety of uses, e.g. displaying -- user lists in client UI and logging/displaying quit messages in the correct -- channel logs/buffers. module Network.IRC.Fun.Client.NickTracker@@ -27,6 +27,7 @@     , newNetwork     , addMember     , addToChannel+    , changeNick     , addChannel     , removeMember     , removeFromChannel@@ -87,6 +88,17 @@             Just (ChannelTracker nicks) ->                 let ct = ChannelTracker $ S.insert nick nicks                 in  M.insert chan ct chans++-- | Record a nickname change. Remove old nickname from the channels in which+-- it's present, and add the new nickname to them.+changeNick :: NickName -> NickName -> NetworkTracker -> NetworkTracker+changeNick old new (NetworkTracker cts) = NetworkTracker $ f cts+    where+    f chans =+        let chansP = M.filter (old `isMemberOf`) chans+            chansR = M.map (removeMember old) chansP+            chansN = M.map (addMember new) chansR+        in  chansN `M.union` chans  -- | Record a channel with the given present nicknames. addChannel :: ChannelName -> [NickName] -> NetworkTracker -> NetworkTracker