module What4.Utils.Streams
( logErrorStream
) where
import qualified Data.ByteString.UTF8 as UTF8
import qualified System.IO.Streams as Streams
logErrorStream :: Streams.InputStream UTF8.ByteString
-> (String -> IO ())
-> IO ()
logErrorStream :: InputStream ByteString -> (String -> IO ()) -> IO ()
logErrorStream InputStream ByteString
err_stream String -> IO ()
logFn = do
let write_err :: Maybe String -> IO ()
write_err Maybe String
Nothing = () -> IO ()
forall a. a -> IO a
forall (m :: Type -> Type) a. Monad m => a -> m a
return ()
write_err (Just String
b) = String -> IO ()
logFn String
b
err_output <- (Maybe String -> IO ()) -> IO (OutputStream String)
forall a. (Maybe a -> IO ()) -> IO (OutputStream a)
Streams.makeOutputStream Maybe String -> IO ()
write_err
lns <- Streams.map UTF8.toString =<< Streams.lines err_stream
Streams.connect lns err_output