-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Simple commandline text prompt functions
--   
--   The library provides prompt functions for reading user input: for
--   example <a>prompt</a> returns the input given, <a>promptEnter</a>
--   expects only Enter, and <a>yesNo</a> asks for confirmation.
@package simple-prompt
@version 0.2.0.1

module SimplePrompt.Internal

-- | like getInputLine, but error if fails
getPromptLine :: (MonadIO m, MonadMask m) => String -> InputT m String

-- | like getPromptLine, but with initial input
getPromptInitial :: (MonadIO m, MonadMask m) => String -> String -> InputT m String

-- | like getInputChar, but error if fails
getPromptChar :: (MonadIO m, MonadMask m) => String -> InputT m Char

-- | get password
getPromptPassword :: (MonadIO m, MonadMask m) => String -> InputT m String

-- | generic prompt wrapper
getGenericPrompt :: MonadIO m => (String -> InputT m (Maybe a)) -> String -> InputT m a

-- | run a prompt
runPrompt :: (MonadIO m, MonadMask m) => InputT m a -> m a

-- | loop prompt until check
untilInput :: (MonadIO m, MonadMask m) => (a -> Bool) -> InputT m a -> InputT m a

-- | maybe map input or loop prompt
mapInput :: (MonadIO m, MonadMask m) => (a -> Maybe b) -> InputT m a -> InputT m b

-- | repeat prompt until non-empty
nonEmptyInput :: (MonadIO m, MonadMask m) => InputT m String -> InputT m String

-- | repeat prompt if input returned within milliseconds
timedInput :: MonadIO m => InputT m a -> InputT m a
class Monad m => MonadIO (m :: Type -> Type)
class MonadCatch m => MonadMask (m :: Type -> Type)

module SimplePrompt

-- | prompt which drops buffered input (using timedInput)
--   
--   Ignores buffered input lines (ie if input line gotten in under 5ms)
prompt :: (MonadIO m, MonadMask m) => String -> m String

-- | reads string with initial input (using timedInput)
promptInitial :: (MonadIO m, MonadMask m) => String -> String -> m String

-- | reads string with buffering
promptBuffered :: (MonadIO m, MonadMask m) => String -> m String

-- | reads non-empty string (using nonEmptyInput)
promptNonEmpty :: (MonadIO m, MonadMask m) => String -> m String

-- | prompt for character key
promptChar :: (MonadIO m, MonadMask m) => String -> m Char

-- | prompt for Enter key
promptEnter :: (MonadIO m, MonadMask m) => String -> m ()

-- | prompt for a password
promptPassword :: (MonadIO m, MonadMask m) => String -> m String

-- | Yes-No prompt (accepts only {y,n,yes,no} case-insensitive)
yesNo :: (MonadIO m, MonadMask m) => String -> m Bool

-- | Yes-No prompt with default (uses timedInput)
yesNoDefault :: (MonadIO m, MonadMask m) => Bool -> String -> m Bool
