summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulien Dessaux2011-09-02 16:38:27 +0200
committerJulien Dessaux2011-09-02 16:38:27 +0200
commitf1ce0cfee09c5ba316abe437befa8ad75b3a5aa6 (patch)
tree42ca439fb01a8cb867522393d1e81707c74e839c
parentFixed mistake that prevented death message to be parsed upon restarting (diff)
downloadhsbot-f1ce0cfee09c5ba316abe437befa8ad75b3a5aa6.tar.gz
hsbot-f1ce0cfee09c5ba316abe437befa8ad75b3a5aa6.tar.bz2
hsbot-f1ce0cfee09c5ba316abe437befa8ad75b3a5aa6.zip
Added score sorting for the duck module
-rw-r--r--Hsbot/Plugin/Duck.hs8
1 files changed, 7 insertions, 1 deletions
diff --git a/Hsbot/Plugin/Duck.hs b/Hsbot/Plugin/Duck.hs
index b152685..1044591 100644
--- a/Hsbot/Plugin/Duck.hs
+++ b/Hsbot/Plugin/Duck.hs
@@ -13,6 +13,7 @@ import Data.Acid
import qualified Data.List as L
import qualified Data.Map as M
import Data.Maybe
+import Data.Ord ()
import Data.SafeCopy
import Data.Typeable
import qualified Network.IRC as IRC
@@ -151,8 +152,13 @@ bangs = [ "PAN", "PAN!" ]
printDuckStats :: String -> StatDB -> Plugin (Env IO) ()
printDuckStats channel statDB = do
sendLine "Duck slaughter simulator - Hall of Fame"
- mapM_ (sendLine . buildLine) $ M.toList (nickStats statDB)
+ mapM_ (sendLine . buildLine) . reverse . L.sortBy scoreSort $ M.toList (nickStats statDB)
where
+ scoreSort :: (String, Int) -> (String, Int) -> Ordering
+ scoreSort (_, s1) (_,s2)
+ | s1 < s2 = LT
+ | s1 > s2 = GT
+ | otherwise = EQ
buildLine :: (String, Int) -> String
buildLine (nick, score) = concat [ nick, ": ", show score ]
sendLine :: String -> Plugin (Env IO) ()