mirror of
https://github.com/simonmichael/hledger.git
synced 2024-12-25 03:13:25 +03:00
lib: debug helpers traceAt, traceAtWith
This commit is contained in:
parent
7564963a62
commit
e0c3275d74
@ -12,6 +12,8 @@ module Hledger.Utils.Debug (
|
||||
,pshow
|
||||
,ptrace
|
||||
,traceWith
|
||||
,traceAt
|
||||
,traceAtWith
|
||||
,debugLevel
|
||||
,ptraceAt
|
||||
,ptraceAtWith
|
||||
@ -81,8 +83,9 @@ pshow = ppShow
|
||||
ptrace :: Show a => a -> a
|
||||
ptrace = traceWith pshow
|
||||
|
||||
-- | Trace (print to stderr) a showable value using a custom show function.
|
||||
traceWith :: (a -> String) -> a -> a
|
||||
-- | Like traceShowId, but uses a custom show function to render the value.
|
||||
-- traceShowIdWith was too much of a mouthful.
|
||||
traceWith :: Show a => (a -> String) -> a -> a
|
||||
traceWith f a = trace (f a) a
|
||||
|
||||
-- | Global debug level, which controls the verbosity of debug output
|
||||
@ -108,6 +111,18 @@ debugLevel = case snd $ break (=="--debug") args of
|
||||
where
|
||||
args = unsafePerformIO getArgs
|
||||
|
||||
-- | Trace (print to stderr) a string if the global debug level is at
|
||||
-- or above the specified level. At level 0, always prints. Otherwise,
|
||||
-- uses unsafePerformIO.
|
||||
traceAt :: Int -> String -> a -> a
|
||||
traceAt level
|
||||
| level > 0 && debugLevel < level = flip const
|
||||
| otherwise = trace
|
||||
|
||||
-- | Trace (print to stderr) a showable value using a custom show function.
|
||||
traceAtWith :: (a -> String) -> a -> a
|
||||
traceAtWith f a = trace (f a) a
|
||||
|
||||
-- | Pretty-print a label and a showable value to the console
|
||||
-- if the global debug level is at or above the specified level.
|
||||
-- At level 0, always prints. Otherwise, uses unsafePerformIO.
|
||||
|
Loading…
Reference in New Issue
Block a user