[Pkg-haskell-commits] [SCM] haskell-testpack branch, master, updated. debian/1.0.2-1-4-gb0d6b36

John Goerzen jgoerzen at complete.org
Fri Apr 23 15:14:34 UTC 2010


The following commit has been merged in the master branch:
commit 0f417697ab36ec2b3ffcb8257990aaa5b42f8c2b
Author: John Goerzen <jgoerzen at complete.org>
Date:   Thu Nov 23 09:27:44 2006 +0100

    Added writeMeterString

diff --git a/MissingH/ProgressMeter.hs b/MissingH/ProgressMeter.hs
index d916037..f6063b9 100644
--- a/MissingH/ProgressMeter.hs
+++ b/MissingH/ProgressMeter.hs
@@ -93,8 +93,19 @@ displayMeter r = withMVar r $ \meter ->
 {- | Clears the meter -- outputs CR, spaces equal to the width - 1,
 then another CR. -}
 clearMeter :: ProgressMeter -> IO ()
-clearMeter pm = withMVar pm $ \m ->
-                putStr $ "\r" ++ replicate (width m - 1) ' ' ++ "\r"
+clearMeter pm = withMVar pm $ \m -> putStr (clearmeterstr m)
+
+{- | Clears the meter, writes the given string, then restores the meter. 
+The string is assumed to contain a trailing newline. -}
+writeMeterString :: ProgressMeter -> String -> IO ()
+writeMeterString pm msg = withMVar pm $ \meter ->
+                          do putStr (clearmeterstr meter)
+                             putStr msg
+                             s <- renderMeterR meter
+                             putStr ("\r" ++ s)
+
+clearmeterstr m = "\r" ++ replicate (width m - 1) ' ' ++ "\r"
+
 
 {- | Starts a thread that updates the meter every n seconds by calling
 the specified function.  Note: 'displayMeter' is an ideal function here.
@@ -131,7 +142,7 @@ renderMeter :: ProgressMeter -> IO String
 renderMeter r = withMVar r $ renderMeterR
 
 renderMeterR :: ProgressMeterR -> IO String
-renerMeterR meter =
+renderMeterR meter =
     do overallpct <- renderpct (masterP meter)
        components <- mapM (rendercomponent (renderer meter))
                      (components meter)

-- 
haskell-testpack



More information about the Pkg-haskell-commits mailing list