module Manatee.Toolkit.General.ByteString where
import Data.ByteString (ByteString)
import Data.ByteString.Internal (isSpaceWord8, c2w)
import System.FilePath (pathSeparator)
import qualified Data.ByteString as BS
import qualified Data.ByteString.Char8 as B
combine :: ByteString -> ByteString -> ByteString
combine dir file
| B.isSuffixOf separator dir
= B.concat [dir, file]
| otherwise
= B.concat [dir, separator, file]
where separator = B.singleton pathSeparator
isBlankByteString :: ByteString -> Bool
isBlankByteString =
BS.all isSpaceWord8
wrapLine :: Int -> [ByteString] -> [[ByteString]]
wrapLine width = wrap 0 []
where wrap :: Int -> [ByteString] -> [ByteString] -> [[ByteString]]
wrap 0 [] (w:ws)
| B.length w + 1 > width
= wrap (B.length w) [w] ws
wrap col line (w:ws)
| col + B.length w + 1 > width
= reverse line : wrap 0 [] (w:ws)
wrap col line (w:ws)
= let col' = col + B.length w + 1
in wrap col' (w:line) ws
wrap _ [] [] = []
wrap _ line [] = [reverse line]
splitWords :: ByteString -> [ByteString]
splitWords bytestring =
map (BS.map (\x -> if isSpaceWord8 x then c2w ' ' else x)) $ BS.splitWith isSpaceWord8 bytestring