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