Codec.Binary.Xx

dataenc-0.14.0.7: Data encoding library

Copyright | (c) 2007 Magnus Therning
License | BSD3
Safe Haskell | Safe
Language | Haskell98

Codec.Binary.Xx

Description

Xxencoding is obsolete but still included for completeness. Further information on the encoding can be found at http://en.wikipedia.org/wiki/Xxencode. It should be noted that this implementation performs no padding, due to the splitting up between encoding and chopping.

Further documentation and information can be found at http://www.haskell.org/haskellwiki/Library/Data_encoding.

Synopsis

- data EncIncData
  - = EChunk [Word8]
  - | EDone
- data EncIncRes i
  - = EPart i (EncIncData -> EncIncRes i)
  - | EFinal i
- encodeInc :: EncIncData -> EncIncRes String
- encode :: [Word8] -> String
- data DecIncData i
  - = DChunk i
  - | DDone
- data DecIncRes i
  - = DPart [Word8] (DecIncData i -> DecIncRes i)
  - | DFinal [Word8] i
  - | DFail [Word8] i
- decodeInc :: DecIncData String -> DecIncRes String
- decode :: String -> Maybe [Word8]
- chop :: Int -> String -> [String]
- unchop :: [String] -> String

# Documentation

data EncIncData #

Data type for the incremental encoding functions.

Constructors

EChunk [Word8] | a chunk of data to be encoded
EDone | the signal to the encoder that the stream of data is ending

data EncIncRes i #

Data type for the result of calling the incremental encoding functions.

Constructors

EPart i (EncIncData -> EncIncRes i) | a partial result together with the continuation to use for further encoding
EFinal i | the final result of encoding (the response to `EDone`)

encodeInc :: EncIncData -> EncIncRes String #

Incremental encoder function.

encode :: [Word8] -> String #

Encode data.

data DecIncData i #

Data type for the incremental decoding functions.

Constructors

DChunk i | a chunk of data to be decoded
DDone | the signal to the decoder that the stream of data is ending

data DecIncRes i #

Data type for the result of calling the incremental encoding functions.

Constructors

DPart [Word8] (DecIncData i -> DecIncRes i) | a partial result together with the continuation to user for further decoding
DFinal [Word8] i | the final result of decoding (the response to `DDone`)
DFail [Word8] i | a partial result for a failed decoding, together with the remainder of the data passed in so far

decodeInc :: DecIncData String -> DecIncRes String #

Incremental decoder function.

decode :: String -> Maybe [Word8] #

Decode data.

chop #

Arguments

:: Int | length (value should be in the range `[5..85]`)
-> String |
-> [String] |

Chop up a string in parts. Each string in the resulting list is prepended with the length according to the xxencode "specificiation".

Notes:

- The length of the strings in the result will be `(n -1) `div` 4 * 4 + 1`. The `-1` comes from the need to prepend the length (which explains the final `+1`). Keeping it to a multiple of 4 means that strings returned from `encode` can be chopped without requiring any changes.

unchop :: [String] -> String #

Concatenate the strings into one long string. Each string is assumed to be prepended with the length according to the xxencode specification.