module Language.Haskell.Ghcid.Util
( dropPrefixRepeatedly
, outStrLn
, outStr
, allGoodMessage
) where
import Control.Concurrent.Extra
import System.IO.Unsafe
import Data.List
dropPrefixRepeatedly :: Eq a => [a] -> [a] -> [a]
dropPrefixRepeatedly [] s = s
dropPrefixRepeatedly pre s = maybe s (dropPrefixRepeatedly pre) $ stripPrefix pre s
lock :: Lock
lock = unsafePerformIO newLock
outStr :: String -> IO ()
outStr = withLock lock . putStr
outStrLn :: String -> IO ()
outStrLn s = outStr $ s ++ "\n"
allGoodMessage :: String
allGoodMessage = "All good"