module CabalGild.Class.MonadRead where import qualified CabalGild.Type.Input as Input import qualified Data.ByteString as ByteString -- | A 'Monad' that can also read input, either from standard input (STDIN) or -- from a file. class (Monad m) => MonadRead m where -- | Reads input from the given 'Input.Input'. read :: Input.Input -> m ByteString.ByteString -- | Uses 'ByteString.getContents' or 'ByteString.readFile'. instance MonadRead IO where read :: Input -> IO ByteString read Input i = case Input i of Input Input.Stdin -> IO ByteString ByteString.getContents Input.File FilePath f -> FilePath -> IO ByteString ByteString.readFile FilePath f