module System.Log.Simple.Stream (
	stream, console,
	coloredStream, coloredConsole
	) where

import Control.Monad.IO.Class
import Data.Text (Text)
import qualified Data.Text.IO as T
import System.Log.Simple.Base
import System.IO
import Text.Format (Formatted)
import Text.Format.Colored

stream ∷ Handle → Consumer Text
stream h = do
	liftIO $ hSetEncoding h utf8
	return $ \txt → T.hPutStrLn h txt >> hFlush h

console ∷ Consumer Text
console = stream stderr

coloredStream ∷ Handle → Consumer Formatted
coloredStream h = do
	liftIO $ hSetEncoding h utf8
	return $ \f → hColoredLine h f >> hFlush h

coloredConsole ∷ Consumer Formatted
coloredConsole = coloredStream stderr
