Copyright | (c) 2012 Magnus Therning |
---|---|
License | BSD3 |
Safe Haskell | None |
Language | Haskell2010 |
Implementation based on the specification found at http://yence.sourceforge.net/docs/protocol/version1_3_draft.html.
Synopsis
- yEncode :: ByteString -> (ByteString, ByteString)
- yDecode :: ByteString -> Either (ByteString, ByteString) (ByteString, ByteString)
- encode :: ByteString -> ByteString
- decode :: ByteString -> Either (ByteString, ByteString) ByteString
Documentation
yEncode :: ByteString -> (ByteString, ByteString) Source #
Encoding function.
This function allocates enough space to hold 20% more than the size of the indata (or at least 512 bytes) and then encodes as much as possible of the indata. That means there is a risk that the encoded data won't fit and in that case the second part of the pair contains the remainder of the indata.
>>>
yEncode $ Data.ByteString.Char8.pack "foobar"
("\144\153\153\140\139\156","")>>>
snd $ yEncode $ Data.ByteString.Char8.pack $ Data.List.take 257 $ repeat '\x13'
"\DC3"
yDecode :: ByteString -> Either (ByteString, ByteString) (ByteString, ByteString) Source #
Decoding function.
>>>
yDecode $ Data.ByteString.pack [144,153,153,140,139,156]
Right ("foobar","")>>>
yDecode $ Data.ByteString.Char8.pack "=}"
Right ("\DC3","")
A Left
value is only ever returned on decoding errors which, due to
characteristics of the encoding, can never happen.
>>>
yDecode $ Data.ByteString.Char8.pack "="
Right ("","=")
encode :: ByteString -> ByteString Source #
Convenient function that calls y_enc
repeatedly until the whole input
data is encoded.
decode :: ByteString -> Either (ByteString, ByteString) ByteString Source #
A synonym for y_dec
.