hans-2.4.0.0: src/Hans/Utils.hs
module Hans.Utils where
import Control.Monad (MonadPlus(mzero))
import Numeric (showHex)
import qualified Data.ByteString.Lazy as L
import qualified Data.ByteString as S
type DeviceName = String
-- | Pseudo headers are constructed strictly.
type MkPseudoHeader = Int -> S.ByteString
type Endo a = a -> a
-- | Discard the result of a monadic computation.
void :: Monad m => m a -> m ()
void m = m >> return ()
-- | Show a single hex number, padded with a leading 0.
showPaddedHex :: (Integral a, Show a) => a -> ShowS
showPaddedHex x
| x < 0x10 = showChar '0' . base
| otherwise = base
where base = showHex x
-- | Lift a maybe into MonadPlus
just :: MonadPlus m => Maybe a -> m a
just = maybe mzero return
-- | Make a singleton list.
singleton :: a -> [a]
singleton x = [x]
-- | Make a lazy bytestring from a strict one.
chunk :: S.ByteString -> L.ByteString
chunk bs = L.fromChunks [bs]
strict :: L.ByteString -> S.ByteString
strict = S.concat . L.toChunks