sandi-0.5: Data encoding library

Copyright (c) 2012 Magnus Therning BSD3 None Haskell2010

Codec.Binary.Yenc

Description

Implementation based on the specification found at http://yence.sourceforge.net/docs/protocol/version1_3_draft.html.

Synopsis

# Documentation

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"  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 ("","=")


Convenient function that calls y_enc repeatedly until the whole input data is encoded.

A synonym for y_dec.