sarsi-0.0.0.0: src/Sarsi/Trace.hs
module Sarsi.Trace where
import Data.Machine ((<~), auto, runT_)
import Data.Attoparsec.Text (Parser)
import Data.Attoparsec.Text.Machine (streamParser)
import System.IO (Handle)
import System.IO.Machine (byLine, printer, sourceHandle)
import qualified Codec.GHC.Log as GHC
import qualified Codec.Sarsi.SBT as SBT
import qualified Data.Text as Text
traceHS :: Handle -> IO ()
traceHS = traceParser GHC.messageParser
traceSBT :: Handle -> IO ()
traceSBT = traceParser SBT.eventParser
traceParser :: Show a => Parser a -> Handle -> IO ()
traceParser parser h = do
runT_ $ printer <~ streamParser parser <~ appendCR <~ sourceHandle byLine h
where
appendCR = auto $ (`Text.snoc` '\n')