summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSam T <pxqr.sta@gmail.com>2013-06-02 07:04:34 +0400
committerSam T <pxqr.sta@gmail.com>2013-06-02 07:04:34 +0400
commit8deb9ec7c7d500daa3e84a92de02ae205ada7433 (patch)
tree61beb2b1021e9c314a72950f1e6527f4172df142 /src
parent665c7fe8e106c2920323586cedbdd52f8db09b0f (diff)
~ Use pretty package instead of ansi-wl-pprint.
Because it's already included core libraries in and we do not need all those things provided by ansi-wl-pprint.
Diffstat (limited to 'src')
-rw-r--r--src/Data/BEncode.hs31
1 files changed, 14 insertions, 17 deletions
diff --git a/src/Data/BEncode.hs b/src/Data/BEncode.hs
index 5097fe8..953fda3 100644
--- a/src/Data/BEncode.hs
+++ b/src/Data/BEncode.hs
@@ -42,6 +42,7 @@
42-- This module is considered to be imported qualified. 42-- This module is considered to be imported qualified.
43-- 43--
44{-# LANGUAGE FlexibleInstances #-} 44{-# LANGUAGE FlexibleInstances #-}
45{-# LANGUAGE Trustworthy #-}
45module Data.BEncode 46module Data.BEncode
46 ( -- * Datatype 47 ( -- * Datatype
47 BEncode(..) 48 BEncode(..)
@@ -92,10 +93,11 @@ import qualified Data.ByteString.Builder.Prim as BP (int64Dec, primBounded)
92import Data.Text (Text) 93import Data.Text (Text)
93import qualified Data.Text.Encoding as T 94import qualified Data.Text.Encoding as T
94import Data.Version 95import Data.Version
95import Text.PrettyPrint.ANSI.Leijen (Pretty, Doc, pretty, (<+>), (</>)) 96import Text.PrettyPrint hiding ((<>))
96import qualified Text.PrettyPrint.ANSI.Leijen as PP
97import qualified Text.ParserCombinators.ReadP as ReadP 97import qualified Text.ParserCombinators.ReadP as ReadP
98 98
99
100
99type Dict = Map ByteString BEncode 101type Dict = Map ByteString BEncode
100 102
101-- | 'BEncode' is straightforward ADT for b-encoded values. 103-- | 'BEncode' is straightforward ADT for b-encoded values.
@@ -432,23 +434,18 @@ parser = valueP
432 434
433-------------------------------- pretty printing ------------------------------- 435-------------------------------- pretty printing -------------------------------
434printPretty :: BEncode -> IO () 436printPretty :: BEncode -> IO ()
435printPretty = print . pretty 437printPretty = print . ppBEncode
436 438
437ppBS :: ByteString -> Doc 439ppBS :: ByteString -> Doc
438ppBS = PP.string . map w2c . B.unpack 440ppBS = text . map w2c . B.unpack
439 441
440instance Pretty BEncode where 442ppBEncode :: BEncode -> Doc
441 pretty (BInteger i) = PP.integer (fromIntegral i) 443ppBEncode (BInteger i) = int (fromIntegral i)
442 pretty (BString s) = ppBS s 444ppBEncode (BString s) = ppBS s
443 pretty (BList l) = PP.lbracket <+> 445ppBEncode (BList l) = brackets $ hsep (punctuate comma (map ppBEncode l))
444 PP.hsep (PP.punctuate PP.comma (map PP.pretty l)) <+> 446ppBEncode (BDict d) = braces $ vcat (punctuate comma (map ppKV (M.toAscList d)))
445 PP.rbracket 447 where
446 pretty (BDict d) = 448 ppKV (k, v) = ppBS k <+> colon <+> ppBEncode v
447 PP.align $ PP.lbrace <+>
448 PP.vsep (PP.punctuate PP.comma (map ppKV (M.toAscList d))) </>
449 PP.rbrace
450 where
451 ppKV (k, v) = ppBS k <+> PP.colon <+> PP.pretty v
452 449
453 450
454------------------------------- other instances ------------------------------ 451------------------------------- other instances ------------------------------