Bencode: make encode a bit more readable
authorRamakrishnan Muthukrishnan <ram@rkrishnan.org>
Thu, 23 Apr 2015 07:35:34 +0000 (13:05 +0530)
committerRamakrishnan Muthukrishnan <ram@rkrishnan.org>
Thu, 23 Apr 2015 07:35:34 +0000 (13:05 +0530)
src/FuncTorrent/Bencode.hs

index f1a29809f731149f15fbc8975ef21cb0f226d4e3..3a982ec0336da0f8ca5a31bbfb73ed4a29b2d78e 100644 (file)
@@ -16,7 +16,7 @@ import Control.Applicative ((<*))
 import Data.ByteString (ByteString, length, concat)
 import Data.ByteString.Char8 (unpack, pack)
 import Data.Functor ((<$>))
-import Data.Map.Strict (Map, fromList, keys, (!))
+import Data.Map.Strict (Map, fromList, toList)
 import Text.ParserCombinators.Parsec
 import qualified Text.Parsec.ByteString as ParsecBS
 
@@ -160,4 +160,5 @@ encode (Blist xs) = concat ["l", concat $ map encode xs, "e"]
 encode (Bdict d) = concat ["d", concat kvlist, "e"]
     where
       kvlist :: [ByteString]
-      kvlist = [concat [encode . Bstr . pack $ k , encode (d ! k)] | k <- keys d]
+      kvlist = [encPair kv | kv <- toList d]
+      encPair (k, v) = concat [encode . Bstr . pack $ k, encode v]