zifter-0.0.0.0: src/Zifter/Zift.hs
module Zifter.Zift
( getRootDir
, getSettings
, getSetting
, ziftP
, printZift
, printZiftMessage
, printPreprocessingDone
, printPreprocessingError
, printWithColors
, liftIO
, module Zifter.Zift.Types
) where
import Control.Monad.IO.Class (liftIO)
import Data.Foldable
import System.Console.ANSI
import Path
import Zifter.OptParse.Types
import Zifter.Zift.Types
getContext :: Zift ZiftContext
getContext = Zift $ \zc st -> pure (ZiftSuccess zc, st)
getRootDir :: Zift (Path Abs Dir)
getRootDir = fmap rootdir getContext
getSettings :: Zift Settings
getSettings = fmap settings getContext
getSetting :: (Settings -> a) -> Zift a
getSetting func = func <$> getSettings
ziftP :: [Zift ()] -> Zift ()
ziftP = sequenceA_
printZift :: String -> Zift ()
printZift = printWithColors []
printZiftMessage :: String -> Zift ()
printZiftMessage = printWithColors [SetColor Foreground Dull Blue]
printPreprocessingDone :: String -> Zift ()
printPreprocessingDone = printWithColors [SetColor Foreground Dull Green]
printPreprocessingError :: String -> Zift ()
printPreprocessingError = printWithColors [SetColor Foreground Dull Red]
printWithColors :: [SGR] -> String -> Zift ()
printWithColors commands str =
Zift $ \_ st -> do
let st' =
ZiftState
{bufferedOutput = ZiftOutput commands str : bufferedOutput st}
pure (ZiftSuccess (), st')