aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/Utils.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Utils.hs')
-rw-r--r--src/Utils.hs32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/Utils.hs b/src/Utils.hs
new file mode 100644
index 0000000..21ee67b
--- /dev/null
+++ b/src/Utils.hs
@@ -0,0 +1,32 @@
+{-
+ - Copyright 2015 Egor Tensin <Egor.Tensin@gmail.com>
+ - This file is licensed under the terms of the MIT License.
+ - See LICENSE.txt for details.
+-}
+
+module Utils where
+
+import Control.Monad ( liftM )
+import Data.Char ( toLower )
+import System.IO ( hFlush, stdout )
+
+prompt :: String -> IO String
+prompt banner = do
+ putStr banner
+ hFlush stdout
+ getLine
+
+promptYesNo :: String -> IO Bool
+promptYesNo banner = do
+ response <- liftM (map toLower) $ prompt banner
+ 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) "