packages feed

craft-0.0.0.1: src/Craft/Helpers.hs

module Craft.Helpers
( module Craft.Helpers
, when
, unless
, void
, md5
)
where

import           Control.Monad        (unless, void, when)
import           Data.Digest.Pure.MD5 (md5)
import           System.Console.ANSI


color :: Color -> IO a -> IO a
color c action = do
  setSGR [SetColor Foreground Vivid c]
  r <- action
  setSGR [Reset]
  return r


trimTrailing :: String -> String
trimTrailing = reverse . dropWhile (`elem` ("\n\r\t " :: String)) . reverse


whenM :: Monad m => m Bool -> m () -> m ()
whenM mbool action = mbool >>= flip when action


unlessM :: Monad m => m Bool -> m () -> m ()
unlessM mbool action = mbool >>= flip unless action


whenJust :: Monad m => Maybe a -> (a -> m ()) -> m ()
whenJust Nothing  _   = return ()
whenJust (Just v) act = act v