dataenc-0.14.0.7: Data encoding library

Copyright(c) 2007 Magnus Therning
LicenseBSD3
Safe HaskellSafe
LanguageHaskell98

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

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.