bencode 0.1 → 0.2
raw patch · 3 files changed
+14/−5 lines, 3 filesdep +binary
Dependencies added: binary
Files
- bencode.cabal +2/−2
- src/Data/BEncode.hs +9/−0
- src/Data/BEncode/Parser.hs +3/−3
bencode.cabal view
@@ -1,11 +1,11 @@ Name: bencode-Version: 0.1+Version: 0.2 Maintainer: Lemmih (lemmih@gmail.com) Author: Lemmih (lemmih@gmail.com), Jesper Louis Andersen Copyright: 2005-2007, Lemmih License-File: LICENSE License: BSD3-Build-Depends: base, parsec+Build-Depends: base, parsec, binary Category: Text Synopsis: Parser and printer for bencoded data. Tested-with: GHC ==6.6
src/Data/BEncode.hs view
@@ -46,9 +46,11 @@ import Text.ParserCombinators.Parsec import qualified Data.ByteString.Char8 as BS import Data.ByteString (ByteString)+import Data.Binary import Data.BEncode.Lexer ( Token (..), lexer ) + type BParser a = GenParser Token () a {- | The B-coding defines an abstract syntax tree given as a simple@@ -59,6 +61,13 @@ | BList [BEncode] | BDict (Map String BEncode) deriving (Eq, Ord, Show)++instance Binary BEncode where+ put e = put (BS.pack $ bShow e "")+ get = do s <- get+ case bRead s of+ Just e -> return e+ Nothing -> fail "Failed to parse BEncoded data" -- Source possition is pretty useless in BEncoded data. FIXME updatePos :: (SourcePos -> Token -> [Token] -> SourcePos)
src/Data/BEncode/Parser.hs view
@@ -35,7 +35,7 @@ , list , optional , bstring- , bfaststring+ , bbytestring , bint , setInput , (<|>)@@ -104,8 +104,8 @@ BString str -> return (BS.unpack str) _ -> fail $ "Expected BString, found: " ++ show b -bfaststring :: BParser BEncode -> BParser BS.ByteString-bfaststring p = do b <- p+bbytestring :: BParser BEncode -> BParser BS.ByteString+bbytestring p = do b <- p case b of BString str -> return str _ -> fail $ "Expected BString, found: " ++ show b