{-# LANGUAGE DeriveDataTypeable #-} -- | Presentable version of Data.ByteString. module Present.ByteString where import qualified Data.ByteString as S import qualified Data.ByteString.Lazy as L import Data.Data -- | Normalize a strict Data.ByteString to a simple type. normalizeStrictByteString :: S.ByteString -> ByteString normalizeStrictByteString = normalizeByteString . L.fromChunks . return -- | Normalize Data.ByteString.Lazy to a simple, presentable data type. normalizeByteString :: L.ByteString -> ByteString normalizeByteString t = case L.uncons t of Just (x,xs) -> Cons (toEnum (fromEnum x)) (normalizeByteString xs) Nothing -> Nil -- | A lazy, simple but clean presentable version of Data.ByteString. data ByteString = Cons !Char ByteString | Nil deriving (Typeable,Data)