module CabalGild.Unstable.Extra.ByteString where import qualified Data.ByteString as ByteString -- | Calling @replace needle replacement haystack@ will replace every -- non-overlapping occurrence of @needle@ in @haystack@ with @replacement@. -- -- replace :: ByteString.ByteString -> ByteString.ByteString -> ByteString.ByteString -> ByteString.ByteString replace needle replacement = ByteString.intercalate replacement . splitOn needle -- | Calling @splitOn needle haystack@ will split @haystack@ into a list of -- substrings using @needle@ as the delimiter. -- -- splitOn :: ByteString.ByteString -> ByteString.ByteString -> [ByteString.ByteString] splitOn needle = let split = ByteString.breakSubstring needle go haystack = let (before, after) = split haystack in before : if ByteString.null after then [] else go (ByteString.drop (ByteString.length needle) after) in go