mirror of
https://github.com/simonmichael/hledger.git
synced 2024-11-07 21:15:19 +03:00
;lib: Hledger.Utils.Debug: haddock
This commit is contained in:
parent
51e3e9cbfa
commit
44d59eab23
@ -3,6 +3,7 @@
|
||||
|
||||
Helpers for debug output and pretty-printing
|
||||
(using pretty-simple, with which there may be some overlap).
|
||||
This module also exports Debug.Trace.
|
||||
|
||||
@dbg0@-@dbg9@ will pretty-print values to stderr
|
||||
if the program was run with a sufficiently high @--debug=N@ argument.
|
||||
@ -14,11 +15,6 @@ to change the debug level without restarting GHCI,
|
||||
save a dummy change in Debug.hs and do a :reload.
|
||||
(Sometimes it's more convenient to temporarily add dbg0's and :reload.)
|
||||
|
||||
@traceParse@ and @dbgparse@ print current status of hledger's parsers
|
||||
(similar to megaparsec's dbg, which was added later).
|
||||
|
||||
This module also exports Debug.Trace.
|
||||
|
||||
-}
|
||||
|
||||
-- more:
|
||||
@ -28,15 +24,20 @@ This module also exports Debug.Trace.
|
||||
-- http://hackage.haskell.org/packages/archive/traced/2009.7.20/doc/html/Debug-Traced.html
|
||||
|
||||
module Hledger.Utils.Debug (
|
||||
-- * Pretty printing
|
||||
pprint
|
||||
,pshow
|
||||
,ptrace
|
||||
-- * Tracing
|
||||
,traceWith
|
||||
-- * Pretty tracing
|
||||
,ptrace
|
||||
-- ** Debug-level-aware tracing
|
||||
,debugLevel
|
||||
,traceAt
|
||||
,traceAtWith
|
||||
,debugLevel
|
||||
,ptraceAt
|
||||
,ptraceAtWith
|
||||
-- ** Easiest form (recommended)
|
||||
,dbg0
|
||||
,dbg1
|
||||
,dbg2
|
||||
@ -47,6 +48,8 @@ module Hledger.Utils.Debug (
|
||||
,dbg7
|
||||
,dbg8
|
||||
,dbg9
|
||||
,dbgExit
|
||||
-- ** More control
|
||||
,dbg0With
|
||||
,dbg1With
|
||||
,dbg2With
|
||||
@ -57,7 +60,7 @@ module Hledger.Utils.Debug (
|
||||
,dbg7With
|
||||
,dbg8With
|
||||
,dbg9With
|
||||
,dbgExit
|
||||
-- ** For standalone lines in IO blocks
|
||||
,ptraceAtIO
|
||||
,dbg0IO
|
||||
,dbg1IO
|
||||
@ -69,8 +72,10 @@ module Hledger.Utils.Debug (
|
||||
,dbg7IO
|
||||
,dbg8IO
|
||||
,dbg9IO
|
||||
-- ** Trace to a file
|
||||
,plog
|
||||
,plogAt
|
||||
-- ** Trace the state of hledger parsers
|
||||
,traceParse
|
||||
,dbgparse
|
||||
,module Debug.Trace
|
||||
@ -126,8 +131,6 @@ traceWith f a = trace (f a) a
|
||||
-- unsafePerformIO and can be accessed from anywhere and before normal
|
||||
-- command-line processing. When running with :main in GHCI, you must
|
||||
-- touch and reload this module to see the effect of a new --debug option.
|
||||
-- After command-line processing, it is also available as the @debug_@
|
||||
-- field of 'Hledger.Cli.CliOptions.CliOpts'.
|
||||
-- {-# OPTIONS_GHC -fno-cse #-}
|
||||
-- {-# NOINLINE debugLevel #-}
|
||||
debugLevel :: Int
|
||||
@ -215,6 +218,10 @@ dbg8 = ptraceAt 8
|
||||
dbg9 :: Show a => String -> a -> a
|
||||
dbg9 = ptraceAt 9
|
||||
|
||||
-- | Like dbg0, but also exit the program. Uses unsafePerformIO.
|
||||
dbgExit :: Show a => String -> a -> a
|
||||
dbgExit msg = const (unsafePerformIO exitFailure) . dbg0 msg
|
||||
|
||||
-- | Like dbg0, but takes a custom show function instead of a label.
|
||||
dbg0With :: Show a => (a -> String) -> a -> a
|
||||
dbg0With = ptraceAtWith 0
|
||||
@ -246,10 +253,6 @@ 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 and
|
||||
-- enforces monadic sequencing (plus convenience aliases).
|
||||
-- XXX These have a bug; they should use
|
||||
@ -301,7 +304,7 @@ plog = plogAt 0
|
||||
-- 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
|
||||
-- (Exception: debug.log: openFile: resource busy (file is locked)).
|
||||
-- (Eg "Exception: debug.log: openFile: resource busy (file is locked)").
|
||||
plogAt :: Show a => Int -> String -> a -> a
|
||||
plogAt lvl
|
||||
| lvl > 0 && debugLevel < lvl = flip const
|
||||
@ -324,7 +327,7 @@ plogAt lvl
|
||||
-- `seq` a
|
||||
|
||||
-- | Print the provided label (if non-null) and current parser state
|
||||
-- (position and next input) to the console. (See also megaparsec's dbg.)
|
||||
-- (position and next input) to the console. See also megaparsec's dbg.
|
||||
traceParse :: String -> TextParser m ()
|
||||
traceParse msg = do
|
||||
pos <- getSourcePos
|
||||
|
Loading…
Reference in New Issue
Block a user