-- 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.3

module SimplePrompt.Internal

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

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

-- | like <a>getInputChar</a>, 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 This prevents
--   buffered stdin lines from being used.
clearedInput :: 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 <a>clearedInput</a>)
--   
--   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 <a>clearedInput</a>)
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 <a>nonEmptyInput</a>)
promptNonEmpty :: (MonadIO m, MonadMask m) => String -> m String

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

-- | prompt for key press (returns False if Ctrl-d or EOF)
promptKeyPress :: (MonadIO m, MonadMask m) => String -> m Bool

-- | 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 <a>clearedInput</a>)
yesNoDefault :: (MonadIO m, MonadMask m) => Bool -> String -> m Bool
