tonalude-0.1.0.0: src/Tonalude/Prelude/IO.hs
module Tonalude.Prelude.IO
( withLazyFile
, readFileBinary
, writeFileBinary
, readFileUtf8
, writeFileUtf8
, hPutBuilder
) where
import RIO hiding
( withLazyFile
, readFileBinary
, writeFileBinary
, readFileUtf8
, writeFileUtf8
, hPutBuilder
)
import qualified RIO
import qualified Data.ByteString as B ()
import qualified Data.ByteString.Lazy as BL
-- | Lazily get the contents of a file. Unlike 'BL.readFile', this
-- ensures that if an exception is thrown, the file handle is closed
-- immediately.
withLazyFile :: FilePath -> (BL.ByteString -> RIO env a) -> RIO env a
withLazyFile = RIO.withLazyFile
-- | Write a file in UTF8 encoding
--
-- This function will use OS-specific line ending handling.
writeFileUtf8 :: FilePath -> Text -> RIO env ()
writeFileUtf8 = RIO.writeFileUtf8
hPutBuilder :: Handle -> Builder -> RIO env ()
hPutBuilder = RIO.hPutBuilder
-- | Same as 'B.readFile', but focused on 'RIO'
readFileBinary :: FilePath -> RIO env ByteString
readFileBinary = RIO.readFileBinary
-- | Same as 'B.writeFile', but focused on 'RIO'
writeFileBinary :: FilePath -> ByteString -> RIO env ()
writeFileBinary = RIO.writeFileBinary
-- | Read a file in UTF8 encoding, throwing an exception on invalid character
-- encoding.
--
-- This function will use OS-specific line ending handling.
readFileUtf8 :: FilePath -> RIO env Text
readFileUtf8 = RIO.readFileUtf8