lib: debug helpers: add ptraceAtWith, dbgNWith
This commit is contained in:
parent
faf85d91e3
commit
45198d3faa
@ -14,8 +14,8 @@ module Hledger.Utils.Debug (
|
||||
,traceWith
|
||||
,debugLevel
|
||||
,ptraceAt
|
||||
,ptraceAtWith
|
||||
,dbg0
|
||||
,dbgExit
|
||||
,dbg1
|
||||
,dbg2
|
||||
,dbg3
|
||||
@ -25,6 +25,17 @@ module Hledger.Utils.Debug (
|
||||
,dbg7
|
||||
,dbg8
|
||||
,dbg9
|
||||
,dbg0With
|
||||
,dbg1With
|
||||
,dbg2With
|
||||
,dbg3With
|
||||
,dbg4With
|
||||
,dbg5With
|
||||
,dbg6With
|
||||
,dbg7With
|
||||
,dbg8With
|
||||
,dbg9With
|
||||
,dbgExit
|
||||
,ptraceAtIO
|
||||
,dbg0IO
|
||||
,dbg1IO
|
||||
@ -111,16 +122,25 @@ ptraceAt level
|
||||
| otherwise = ls
|
||||
in trace (s++":"++nlorspace++intercalate "\n" ls') a
|
||||
|
||||
-- | Pretty-print a message and the showable value to the console, then return it.
|
||||
-- | Like ptraceAt, but takes a custom show function instead of a label.
|
||||
ptraceAtWith :: Show a => Int -> (a -> String) -> a -> a
|
||||
ptraceAtWith level f
|
||||
| level > 0 && debugLevel < level = id
|
||||
| otherwise = \a -> let p = f a
|
||||
-- ls = lines p
|
||||
-- nlorspace | length ls > 1 = "\n"
|
||||
-- | otherwise = " " ++ take (10 - length s) (repeat ' ')
|
||||
-- ls' | length ls > 1 = map (" "++) ls
|
||||
-- | otherwise = ls
|
||||
-- in trace (s++":"++nlorspace++intercalate "\n" ls') a
|
||||
in trace p a
|
||||
|
||||
-- "dbg" would clash with megaparsec.
|
||||
-- | Pretty-print a label and the showable value to the console, then return it.
|
||||
dbg0 :: Show a => String -> a -> a
|
||||
dbg0 = ptraceAt 0
|
||||
-- "dbg" would clash with megaparsec
|
||||
|
||||
-- | Like dbg0, but also exit the program. Uses unsafePerformIO.
|
||||
dbgExit :: Show a => String -> a -> a
|
||||
dbgExit msg = const (unsafePerformIO exitFailure) . dbg0 msg
|
||||
|
||||
-- | Pretty-print a message and the showable value to the console when the global debug level is >= 1, then return it.
|
||||
-- | Pretty-print a label and the showable value to the console when the global debug level is >= 1, then return it.
|
||||
-- Uses unsafePerformIO.
|
||||
dbg1 :: Show a => String -> a -> a
|
||||
dbg1 = ptraceAt 1
|
||||
@ -149,6 +169,41 @@ dbg8 = ptraceAt 8
|
||||
dbg9 :: Show a => String -> a -> a
|
||||
dbg9 = ptraceAt 9
|
||||
|
||||
-- | Like dbg0, but takes a custom show function instead of a label.
|
||||
dbg0With :: Show a => (a -> String) -> a -> a
|
||||
dbg0With = ptraceAtWith 0
|
||||
|
||||
dbg1With :: Show a => (a -> String) -> a -> a
|
||||
dbg1With = ptraceAtWith 1
|
||||
|
||||
dbg2With :: Show a => (a -> String) -> a -> a
|
||||
dbg2With = ptraceAtWith 2
|
||||
|
||||
dbg3With :: Show a => (a -> String) -> a -> a
|
||||
dbg3With = ptraceAtWith 3
|
||||
|
||||
dbg4With :: Show a => (a -> String) -> a -> a
|
||||
dbg4With = ptraceAtWith 4
|
||||
|
||||
dbg5With :: Show a => (a -> String) -> a -> a
|
||||
dbg5With = ptraceAtWith 5
|
||||
|
||||
dbg6With :: Show a => (a -> String) -> a -> a
|
||||
dbg6With = ptraceAtWith 6
|
||||
|
||||
dbg7With :: Show a => (a -> String) -> a -> a
|
||||
dbg7With = ptraceAtWith 7
|
||||
|
||||
dbg8With :: Show a => (a -> String) -> a -> a
|
||||
dbg8With = ptraceAtWith 8
|
||||
|
||||
dbg9With :: Show a => (a -> String) -> a -> a
|
||||
dbg9With = ptraceAtWith 9
|
||||
|
||||
-- | Like dbg0, but also exit the program. Uses unsafePerformIO.
|
||||
dbgExit :: Show a => String -> a -> a
|
||||
dbgExit msg = const (unsafePerformIO exitFailure) . dbg0 msg
|
||||
|
||||
-- | Like ptraceAt, but convenient to insert in an IO monad (plus
|
||||
-- convenience aliases).
|
||||
-- XXX These have a bug; they should use
|
||||
@ -191,12 +246,12 @@ dbg8IO = ptraceAtIO 8
|
||||
dbg9IO :: (MonadIO m, Show a) => String -> a -> m ()
|
||||
dbg9IO = ptraceAtIO 9
|
||||
|
||||
-- | Log a message and a pretty-printed showable value to ./debug.log, then return it.
|
||||
-- | Log a label and a pretty-printed showable value to ./debug.log, then return it.
|
||||
-- Can fail, see plogAt.
|
||||
plog :: Show a => String -> a -> a
|
||||
plog = plogAt 0
|
||||
|
||||
-- | Log a message and a pretty-printed showable value to ./debug.log,
|
||||
-- | Log a label and a pretty-printed showable value to ./debug.log,
|
||||
-- if the global debug level is at or above the specified level.
|
||||
-- At level 0, always logs. Otherwise, uses unsafePerformIO.
|
||||
-- Tends to fail if called more than once, at least when built with -threaded
|
||||
|
||||
Loading…
Reference in New Issue
Block a user