{-# LANGUAGE CPP #-}
{-# LANGUAGE Safe #-}
module Universum.Lifted.File
( appendFile
, getContents
, getLine
, interact
, openFile
, readFile
, writeFile
) where
import Control.Monad.Trans (MonadIO, liftIO)
import Data.Text (Text)
import Prelude (FilePath)
import System.IO (Handle, IOMode)
import qualified Data.Text.IO as XIO
import qualified Data.Text.Lazy as L (Text)
import qualified Data.Text.Lazy.IO as LIO (getContents, interact)
import qualified System.IO as XIO (openFile)
appendFile :: MonadIO m => FilePath -> Text -> m ()
appendFile a b = liftIO (XIO.appendFile a b)
{-# INLINE appendFile #-}
getContents :: MonadIO m => m L.Text
getContents = liftIO LIO.getContents
{-# INLINE getContents #-}
getLine :: MonadIO m => m Text
getLine = liftIO XIO.getLine
{-# INLINE getLine #-}
interact :: MonadIO m => (L.Text -> L.Text) -> m ()
interact a = liftIO (LIO.interact a)
{-# INLINE interact #-}
readFile :: MonadIO m => FilePath -> m Text
readFile a = liftIO (XIO.readFile a)
{-# INLINE readFile #-}
writeFile :: MonadIO m => FilePath -> Text -> m ()
writeFile a b = liftIO (XIO.writeFile a b)
{-# INLINE writeFile #-}
openFile :: MonadIO m => FilePath -> IOMode -> m Handle
openFile a b = liftIO (XIO.openFile a b)
{-# INLINE openFile #-}