packages feed

simple-prompt 0.2.2 → 0.2.3

raw patch · 4 files changed

+28/−16 lines, 4 filesdep +safe

Dependencies added: safe

Files

ChangeLog.md view
@@ -1,5 +1,9 @@ # Revision history for simple-prompt +## 0.2.3 (2024-06-13)+- getGenericPrompt: adapt prompt suffix for final newline or colon+- clearedInput no longer prints short duration for any buffered input+ ## 0.2.2 (2023-10-27) - add promptKeyPress 
simple-prompt.cabal view
@@ -1,5 +1,5 @@ name:                simple-prompt-version:             0.2.2+version:             0.2.3 synopsis:            Simple commandline text prompt functions description:         The library provides prompt functions for reading user input:@@ -10,7 +10,7 @@ license-file:        LICENSE author:              Jens Petersen <juhpetersen@gmail.com> maintainer:          Jens Petersen <juhpetersen@gmail.com>-copyright:           2023  Jens Petersen <juhpetersen@gmail.com>+copyright:           2023-2024  Jens Petersen <juhpetersen@gmail.com> category:            System homepage:            https://github.com/juhp/simple-prompt bug-reports:         https://github.com/juhp/simple-prompt/issues@@ -24,8 +24,9 @@                      || == 8.10.7                      || == 9.0.2                      || == 9.2.8-                     || == 9.4.7-                     || == 9.6.3+                     || == 9.4.8+                     || == 9.6.5+                     || == 9.8.2  source-repository head   type:                git@@ -36,6 +37,7 @@                        exceptions,                        extra,                        haskeline > 0.8,+                       safe,                        time    default-language:    Haskell2010
src/SimplePrompt.hs view
@@ -22,14 +22,14 @@ #include "monadconstraint.h"  -- FIXME use haveTerminalUI ?--- | prompt which drops buffered input (using clearedInput)+-- | prompt which drops buffered input (using `clearedInput`) -- -- Ignores buffered input lines (ie if input line gotten in under 5ms) prompt :: MONADCONSTRAINT => String -> m String prompt = runPrompt . clearedInput . getPromptLine  -- FIXME non-empty?--- | reads string with initial input (using clearedInput)+-- | reads string with initial input (using `clearedInput`) promptInitial :: MONADCONSTRAINT => String -> String -> m String promptInitial s = runPrompt . clearedInput . getPromptInitial s @@ -37,7 +37,7 @@ promptBuffered :: MONADCONSTRAINT => String -> m String promptBuffered = runPrompt . getPromptLine --- | reads non-empty string (using nonEmptyInput)+-- | reads non-empty string (using `nonEmptyInput`) promptNonEmpty :: MONADCONSTRAINT => String -> m String promptNonEmpty = runPrompt . nonEmptyInput . getPromptLine @@ -45,7 +45,7 @@ promptPassword :: MONADCONSTRAINT => String -> m String promptPassword = runPrompt . nonEmptyInput . getPromptPassword --- | prompt for character key+-- | prompt for a printable character promptChar :: MONADCONSTRAINT => String -> m Char promptChar =   runPrompt . clearedInput . getPromptChar@@ -73,7 +73,7 @@         "no" -> Just False         _ ->  Nothing --- | Yes-No prompt with default (uses clearedInput)+-- | Yes-No prompt with default (uses `clearedInput`) yesNoDefault :: MONADCONSTRAINT => Bool -> String -> m Bool yesNoDefault yes desc =   runPrompt . mapInput maybeYN' . clearedInput . getPromptLine $
src/SimplePrompt/Internal.hs view
@@ -24,6 +24,7 @@ #endif import Control.Monad.IO.Class (liftIO, MonadIO) import Data.Time.Clock (diffUTCTime, getCurrentTime)+import Safe (lastMay)  import System.Console.Haskeline @@ -33,20 +34,26 @@ getGenericPrompt :: MonadIO m => (String -> InputT m (Maybe a))                  -> String -> InputT m a getGenericPrompt prompter s =-  prompter (s ++ ": ") >>=+  let suff =+        case lastMay s of+          Just '\n' -> ""+          Just ':' -> " "+          _ -> ": "+  in+  prompter (s ++ suff) >>=   maybe (error "could not read input!") return --- | like getInputLine, but error if fails+-- | like `getInputLine`, but error if fails getPromptLine :: MONADCONSTRAINT => String -> InputT m String getPromptLine =   getGenericPrompt getInputLine --- | like getPromptLine, but with initial input+-- | like `getPromptLine`, but with initial input getPromptInitial :: MONADCONSTRAINT => String -> String -> InputT m String getPromptInitial s i =   getGenericPrompt (`getInputLineWithInitial` (i,"")) s --- | like getInputChar, but error if fails+-- | like `getInputChar`, but error if fails getPromptChar :: MONADCONSTRAINT => String -> InputT m Char getPromptChar =   getGenericPrompt getInputChar@@ -87,9 +94,8 @@   start <- liftIO getCurrentTime   input <- prompter   end <- liftIO getCurrentTime-  let diff = diffUTCTime end start-  if diff < 0.005+  if diffUTCTime end start < 0.005     then do-    outputStrLn $ "ignoring buffered input: " ++ show diff ++ " too quick"+    outputStrLn "dropped buffered input"     clearedInput prompter     else return input