ghcid-0.3: src/Language/Haskell/Ghcid/Util.hs
-- | Utility functions
-- Copyright Neil Mitchell 2014.
module Language.Haskell.Ghcid.Util
( dropPrefixRepeatedly
, outStrLn
, outStr
, allGoodMessage
) where
import Control.Concurrent.Extra
import System.IO.Unsafe
import Data.List
-- | Drop a prefix from a list, no matter how many times that prefix is present
dropPrefixRepeatedly :: Eq a => [a] -> [a] -> [a]
dropPrefixRepeatedly [] s = s
dropPrefixRepeatedly pre s = maybe s (dropPrefixRepeatedly pre) $ stripPrefix pre s
{-# NOINLINE lock #-}
lock :: Lock
lock = unsafePerformIO newLock
outStr :: String -> IO ()
outStr = withLock lock . putStr
outStrLn :: String -> IO ()
outStrLn s = outStr $ s ++ "\n"
-- | The message to show when no errors have been reported
allGoodMessage :: String
allGoodMessage = "All good"