module Prolude.ByteString
  ( -- * ByteString re-exports
    module Data.ByteString
    -- * ByteString functions
  , writeByteStringToFile
    -- * LazyByteString type alias
    -- $alias
  , LazyByteString
    -- * LazyByteString functions
  , putLazyByteString
  )
where

import Data.ByteString (ByteString)
import qualified Control.Monad.IO.Class as MonadIO
import qualified Data.ByteString as BS
import qualified Data.ByteString.Lazy as LBS
import qualified System.IO as IO

{- $alias
We created a type alias for LazyByteString.ByteString simply called LazyByteString.
-}

type LazyByteString = LBS.ByteString

putLazyByteString :: MonadIO.MonadIO m => LazyByteString -> m ()
putLazyByteString :: LazyByteString -> m ()
putLazyByteString = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MonadIO.liftIO (IO () -> m ())
-> (LazyByteString -> IO ()) -> LazyByteString -> m ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. LazyByteString -> IO ()
LBS.putStr

writeByteStringToFile :: MonadIO.MonadIO m => IO.FilePath -> ByteString -> m ()
writeByteStringToFile :: FilePath -> ByteString -> m ()
writeByteStringToFile FilePath
path ByteString
bs = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MonadIO.liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ FilePath -> ByteString -> IO ()
BS.writeFile FilePath
path ByteString
bs