From 136d7d82cdab45b50cafc7c3f53cac7805e3cb7c Mon Sep 17 00:00:00 2001 From: Egor Tensin Date: Sun, 26 Mar 2017 15:31:08 +0300 Subject: put utility modules to bin/Utils/ --- bin/Prompt.hs | 50 -------------------------------------------------- 1 file changed, 50 deletions(-) delete mode 100644 bin/Prompt.hs (limited to 'bin/Prompt.hs') diff --git a/bin/Prompt.hs b/bin/Prompt.hs deleted file mode 100644 index 404c582..0000000 --- a/bin/Prompt.hs +++ /dev/null @@ -1,50 +0,0 @@ --- | --- Copyright : (c) 2015 Egor Tensin --- License : MIT --- Maintainer : Egor.Tensin@gmail.com --- Stability : experimental --- Portability : portable - -module Prompt - ( withPrompt - , withoutPrompt - ) where - -import Control.Monad (void, when) -import Control.Monad.Trans.Class (lift) -import Control.Monad.Trans.Except (ExceptT) -import Data.Char (toLower) -import System.IO (hFlush, stdout) - -prompt :: String -> IO String -prompt msg = do - putStr msg - hFlush stdout - getLine - -promptYesNo :: String -> IO Bool -promptYesNo msg = do - response <- map toLower <$> prompt msg - if response `elem` yeses - then return True - else if response `elem` noes - then return False - else promptToContinue - where - yeses = ["y", "yes"] - noes = ["n", "no"] - -promptToContinue :: IO Bool -promptToContinue = promptYesNo "Continue? (y/n) " - -withPrompt :: String -> ExceptT IOError IO a -> ExceptT IOError IO Bool -withPrompt msg m = do - lift $ do - putStr msg - hFlush stdout - agreed <- lift promptToContinue - when agreed $ void m - return agreed - -withoutPrompt :: ExceptT IOError IO a -> ExceptT IOError IO Bool -withoutPrompt m = m >> return True -- cgit v1.2.3