diff options
author | Egor Tensin <Egor.Tensin@gmail.com> | 2017-03-26 15:31:08 +0300 |
---|---|---|
committer | Egor Tensin <Egor.Tensin@gmail.com> | 2017-03-26 15:31:08 +0300 |
commit | 136d7d82cdab45b50cafc7c3f53cac7805e3cb7c (patch) | |
tree | a99c6bba50ade7cbb55fac0b53608cb60f2c8725 /bin/Prompt.hs | |
parent | rename directories (diff) | |
download | windows-env-136d7d82cdab45b50cafc7c3f53cac7805e3cb7c.tar.gz windows-env-136d7d82cdab45b50cafc7c3f53cac7805e3cb7c.zip |
put utility modules to bin/Utils/
Diffstat (limited to 'bin/Prompt.hs')
-rw-r--r-- | bin/Prompt.hs | 50 |
1 files changed, 0 insertions, 50 deletions
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 <Egor.Tensin@gmail.com> --- 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 |