module FortyTwo.Prompts.Input (inputWithDefault, input) where
import FortyTwo.Renderers.Question (renderQuestion)
import FortyTwo.Utils (clearLines, flush)
import FortyTwo.Constants (emptyString)
inputWithDefault :: String -> String -> IO String
inputWithDefault :: String -> String -> IO String
inputWithDefault String
question String
defaultAnswer = do
String -> IO ()
putStrLn String
emptyString
String -> String -> String -> IO ()
renderQuestion String
question String
defaultAnswer String
emptyString
String -> IO ()
putStr String
" "
IO ()
flush
String
answer <- IO String
getLine
Int -> IO ()
clearLines Int
1
if String -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null String
answer then do
String -> String -> String -> IO ()
renderQuestion String
question String
emptyString String
defaultAnswer
String -> IO String
forall (m :: * -> *) a. Monad m => a -> m a
return String
defaultAnswer
else do
String -> String -> String -> IO ()
renderQuestion String
question String
emptyString String
answer
String -> IO String
forall (m :: * -> *) a. Monad m => a -> m a
return String
answer
input :: String -> IO String
input :: String -> IO String
input String
question = String -> String -> IO String
inputWithDefault String
question String
emptyString