wai-extra-3.1.14: Network/Wai/Util.hs
{-# LANGUAGE CPP #-}
-- | Some helpers functions.
module Network.Wai.Util (
dropWhileEnd,
splitCommas,
trimWS,
) where
import qualified Data.ByteString as S
import Data.Word8 (Word8, _comma, _space)
-- | Used to split a header value which is a comma separated list
splitCommas :: S.ByteString -> [S.ByteString]
splitCommas = map trimWS . S.split _comma
-- Trim whitespace
trimWS :: S.ByteString -> S.ByteString
trimWS = dropWhileEnd (== _space) . S.dropWhile (== _space)
-- | Dropping all 'Word8's from the end that satisfy the predicate.
dropWhileEnd :: (Word8 -> Bool) -> S.ByteString -> S.ByteString
#if MIN_VERSION_bytestring(0,10,12)
dropWhileEnd = S.dropWhileEnd
#else
dropWhileEnd p = fst . S.spanEnd p
#endif