lib: debug helpers traceAt, traceAtWith
This commit is contained in:
		
							parent
							
								
									7564963a62
								
							
						
					
					
						commit
						e0c3275d74
					
				| @ -12,6 +12,8 @@ module Hledger.Utils.Debug ( | |||||||
|   ,pshow |   ,pshow | ||||||
|   ,ptrace |   ,ptrace | ||||||
|   ,traceWith |   ,traceWith | ||||||
|  |   ,traceAt | ||||||
|  |   ,traceAtWith | ||||||
|   ,debugLevel |   ,debugLevel | ||||||
|   ,ptraceAt |   ,ptraceAt | ||||||
|   ,ptraceAtWith |   ,ptraceAtWith | ||||||
| @ -81,8 +83,9 @@ pshow = ppShow | |||||||
| ptrace :: Show a => a -> a | ptrace :: Show a => a -> a | ||||||
| ptrace = traceWith pshow | ptrace = traceWith pshow | ||||||
| 
 | 
 | ||||||
| -- | Trace (print to stderr) a showable value using a custom show function. | -- | Like traceShowId, but uses a custom show function to render the value. | ||||||
| traceWith :: (a -> String) -> a -> a | -- traceShowIdWith was too much of a mouthful. | ||||||
|  | traceWith :: Show a => (a -> String) -> a -> a | ||||||
| traceWith f a = trace (f a) a | traceWith f a = trace (f a) a | ||||||
| 
 | 
 | ||||||
| -- | Global debug level, which controls the verbosity of debug output | -- | Global debug level, which controls the verbosity of debug output | ||||||
| @ -108,6 +111,18 @@ debugLevel = case snd $ break (=="--debug") args of | |||||||
|     where |     where | ||||||
|       args = unsafePerformIO getArgs |       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 | -- | Pretty-print a label and a showable value to the console | ||||||
| -- 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 prints. Otherwise, uses unsafePerformIO. | -- At level 0, always prints. Otherwise, uses unsafePerformIO. | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user