lib: replace pretty-show with pretty-simple
pretty-simple, already used in .ghci, will hopefully give nicer debug
output, including for values which don't have Read-able Show output.
This should mean that we can start removing custom string-like Show
instances that were a workaround for pretty-show.
We are using the latest version (4.0.0.0) to get compact output.
Here's some old pretty-show output:
 CsvRules
   { rdirectives = [ ( "skip" , "1" ) ]
   , rcsvfieldindexes = [ ( "date" , 1 ) , ( "amount" , 2 ) ]
   , rassignments = [ ( "amount" , "%2" ) , ( "date" , "%1" ) ]
   , rconditionalblocks = []
   }
And the new pretty-simple output:
 CsvRules
   { rdirectives=
     [ ( "skip", "1" ) ]
   , rcsvfieldindexes=
     [ ( "date", 1 ), ( "amount", 2 ) ]
   , rassignments=
     [ ( "amount", "%2" ), ( "date", "%1" ) ]
   , rconditionalblocks= []
   }
Non-compact pretty-simple output would be:
 CsvRules
     { rdirectives=
         [
             ( "skip"
             , "1B"
             )
         ]
     , rcsvfieldindexes=
         [
             ( "date"
             , 1
             )
         ,
             ( "amount"
             , 2
             )
         ]
     , rassignments=
         [
             ( "amount"
             , "%2"
             )
         ,
             ( "date"
             , "%1"
             )
         ]
     , rconditionalblocks=[]
     }
Also:
- Account's Show instance no longer converts : to _ in account names
- drop unused pretty-show dependency from hledger, hledger-ui packages
- regenerate hledger-lib with the older hpack that's shipped in stack
			
			
This commit is contained in:
		
							parent
							
								
									84ee05baa6
								
							
						
					
					
						commit
						a97daaf322
					
				| @ -14,7 +14,6 @@ import Data.List.Extra (groupSort, groupOn) | |||||||
| import Data.Maybe (fromMaybe) | import Data.Maybe (fromMaybe) | ||||||
| import Data.Ord (Down(..)) | import Data.Ord (Down(..)) | ||||||
| import qualified Data.Map as M | import qualified Data.Map as M | ||||||
| import qualified Data.Text as T |  | ||||||
| import Safe (headMay, lookupJustDef) | import Safe (headMay, lookupJustDef) | ||||||
| import Text.Printf | import Text.Printf | ||||||
| 
 | 
 | ||||||
| @ -28,12 +27,11 @@ import Hledger.Utils | |||||||
| -- deriving instance Show Account | -- deriving instance Show Account | ||||||
| instance Show Account where | instance Show Account where | ||||||
|     show Account{..} = printf "Account %s (boring:%s, postings:%d, ebalance:%s, ibalance:%s)" |     show Account{..} = printf "Account %s (boring:%s, postings:%d, ebalance:%s, ibalance:%s)" | ||||||
|                        (T.map colonToUnderscore aname)  -- hide : so pretty-show doesn't break line |                        aname | ||||||
|                        (if aboring then "y" else "n" :: String) |                        (if aboring then "y" else "n" :: String) | ||||||
|                        anumpostings |                        anumpostings | ||||||
|                        (showMixedAmount aebalance) |                        (showMixedAmount aebalance) | ||||||
|                        (showMixedAmount aibalance) |                        (showMixedAmount aibalance) | ||||||
|       where colonToUnderscore x = if x == ':' then '_' else x |  | ||||||
| 
 | 
 | ||||||
| instance Eq Account where | instance Eq Account where | ||||||
|   (==) a b = aname a == aname b -- quick equality test for speed |   (==) a b = aname a == aname b -- quick equality test for speed | ||||||
|  | |||||||
| @ -111,7 +111,6 @@ import Hledger.Utils | |||||||
| -- Help ppShow parse and line-wrap DateSpans better in debug output. | -- Help ppShow parse and line-wrap DateSpans better in debug output. | ||||||
| instance Show DateSpan where | instance Show DateSpan where | ||||||
|     show s = "DateSpan " ++ showDateSpan s |     show s = "DateSpan " ++ showDateSpan s | ||||||
|     -- show s = "DateSpan \"" ++ showDateSpan s ++ "\"" -- quotes to help pretty-show |  | ||||||
| 
 | 
 | ||||||
| showDate :: Day -> String | showDate :: Day -> String | ||||||
| showDate = show | showDate = show | ||||||
|  | |||||||
| @ -89,6 +89,7 @@ import           Control.Monad (when) | |||||||
| import           Control.Monad.IO.Class | import           Control.Monad.IO.Class | ||||||
| import           Data.List hiding (uncons) | import           Data.List hiding (uncons) | ||||||
| import qualified Data.Text as T | import qualified Data.Text as T | ||||||
|  | import qualified Data.Text.Lazy as TL | ||||||
| import           Debug.Trace | import           Debug.Trace | ||||||
| import           Hledger.Utils.Parse | import           Hledger.Utils.Parse | ||||||
| import           Safe (readDef) | import           Safe (readDef) | ||||||
| @ -97,17 +98,27 @@ import           System.Exit | |||||||
| import           System.IO.Unsafe (unsafePerformIO) | import           System.IO.Unsafe (unsafePerformIO) | ||||||
| import           Text.Megaparsec | import           Text.Megaparsec | ||||||
| import           Text.Printf | import           Text.Printf | ||||||
| import           Text.Show.Pretty (ppShow, pPrint) | import           Text.Pretty.Simple  -- (defaultOutputOptionsDarkBg, OutputOptions(..), pShowOpt, pPrintOpt) | ||||||
| 
 | 
 | ||||||
| -- | Pretty print. Easier alias for pretty-show's pPrint. | prettyopts =  | ||||||
|  |     defaultOutputOptionsDarkBg | ||||||
|  |     -- defaultOutputOptionsLightBg | ||||||
|  |     -- defaultOutputOptionsNoColor | ||||||
|  |     { outputOptionsIndentAmount=2 | ||||||
|  |     , outputOptionsCompact=True | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | -- | Pretty print. Generic alias for pretty-simple's pPrint. | ||||||
| pprint :: Show a => a -> IO () | pprint :: Show a => a -> IO () | ||||||
| pprint = pPrint | pprint = pPrintOpt CheckColorTty prettyopts | ||||||
| 
 | 
 | ||||||
| -- | Pretty show. Easier alias for pretty-show's ppShow. | -- | Pretty show. Generic alias for pretty-simple's pShow. | ||||||
| pshow :: Show a => a -> String | pshow :: Show a => a -> String | ||||||
| pshow = ppShow | pshow = TL.unpack . pShowOpt prettyopts | ||||||
| 
 | 
 | ||||||
| -- | Pretty trace. Easier alias for traceShowId + ppShow. | -- XXX some of the below can be improved with pretty-simple, https://github.com/cdepillabout/pretty-simple#readme | ||||||
|  | 
 | ||||||
|  | -- | Pretty trace. Easier alias for traceShowId + pShow. | ||||||
| ptrace :: Show a => a -> a | ptrace :: Show a => a -> a | ||||||
| ptrace = traceWith pshow | ptrace = traceWith pshow | ||||||
| 
 | 
 | ||||||
| @ -157,7 +168,7 @@ traceAtWith f a = trace (f a) a | |||||||
| ptraceAt :: Show a => Int -> String -> a -> a | ptraceAt :: Show a => Int -> String -> a -> a | ||||||
| ptraceAt level | ptraceAt level | ||||||
|     | level > 0 && debugLevel < level = flip const |     | level > 0 && debugLevel < level = flip const | ||||||
|     | otherwise = \s a -> let p = ppShow a |     | otherwise = \s a -> let p = pshow a | ||||||
|                               ls = lines p |                               ls = lines p | ||||||
|                               nlorspace | length ls > 1 = "\n" |                               nlorspace | length ls > 1 = "\n" | ||||||
|                                         | otherwise     = " " ++ take (10 - length s) (repeat ' ') |                                         | otherwise     = " " ++ take (10 - length s) (repeat ' ') | ||||||
| @ -303,7 +314,7 @@ plogAt :: Show a => Int -> String -> a -> a | |||||||
| plogAt lvl | plogAt lvl | ||||||
|     | lvl > 0 && debugLevel < lvl = flip const |     | lvl > 0 && debugLevel < lvl = flip const | ||||||
|     | otherwise = \s a -> |     | otherwise = \s a -> | ||||||
|         let p = ppShow a |         let p = pshow a | ||||||
|             ls = lines p |             ls = lines p | ||||||
|             nlorspace | length ls > 1 = "\n" |             nlorspace | length ls > 1 = "\n" | ||||||
|                       | otherwise     = " " ++ take (10 - length s) (repeat ' ') |                       | otherwise     = " " ++ take (10 - length s) (repeat ' ') | ||||||
|  | |||||||
| @ -1,10 +1,10 @@ | |||||||
| cabal-version: 1.12 | cabal-version: 1.12 | ||||||
| 
 | 
 | ||||||
| -- This file has been generated from package.yaml by hpack version 0.34.2. | -- This file has been generated from package.yaml by hpack version 0.33.0. | ||||||
| -- | -- | ||||||
| -- see: https://github.com/sol/hpack | -- see: https://github.com/sol/hpack | ||||||
| -- | -- | ||||||
| -- hash: 24b8acde4649dda5e31d86c9f4f95744af97bae68f0e978144a55baf621d0bc8 | -- hash: 8be95614d73bb909eb29a27d8411f09623debad24f7fe84cf42ebc8b851a7ba8 | ||||||
| 
 | 
 | ||||||
| name:           hledger-lib | name:           hledger-lib | ||||||
| version:        1.19.99 | version:        1.19.99 | ||||||
| @ -136,7 +136,7 @@ library | |||||||
|     , old-time |     , old-time | ||||||
|     , parsec >=3 |     , parsec >=3 | ||||||
|     , parser-combinators >=0.4.0 |     , parser-combinators >=0.4.0 | ||||||
|     , pretty-show >=1.6.4 |     , pretty-simple >4 && <5 | ||||||
|     , regex-tdfa |     , regex-tdfa | ||||||
|     , safe >=0.2 |     , safe >=0.2 | ||||||
|     , split >=0.1 |     , split >=0.1 | ||||||
| @ -189,7 +189,7 @@ test-suite doctest | |||||||
|     , old-time |     , old-time | ||||||
|     , parsec >=3 |     , parsec >=3 | ||||||
|     , parser-combinators >=0.4.0 |     , parser-combinators >=0.4.0 | ||||||
|     , pretty-show >=1.6.4 |     , pretty-simple >4 && <5 | ||||||
|     , regex-tdfa |     , regex-tdfa | ||||||
|     , safe >=0.2 |     , safe >=0.2 | ||||||
|     , split >=0.1 |     , split >=0.1 | ||||||
| @ -244,7 +244,7 @@ test-suite unittest | |||||||
|     , old-time |     , old-time | ||||||
|     , parsec >=3 |     , parsec >=3 | ||||||
|     , parser-combinators >=0.4.0 |     , parser-combinators >=0.4.0 | ||||||
|     , pretty-show >=1.6.4 |     , pretty-simple >4 && <5 | ||||||
|     , regex-tdfa |     , regex-tdfa | ||||||
|     , safe >=0.2 |     , safe >=0.2 | ||||||
|     , split >=0.1 |     , split >=0.1 | ||||||
|  | |||||||
| @ -69,7 +69,7 @@ dependencies: | |||||||
| - old-time | - old-time | ||||||
| - parsec >=3 | - parsec >=3 | ||||||
| - parser-combinators >=0.4.0 | - parser-combinators >=0.4.0 | ||||||
| - pretty-show >=1.6.4 | - pretty-simple >4 && <5 | ||||||
| - regex-tdfa | - regex-tdfa | ||||||
| - safe >=0.2 | - safe >=0.2 | ||||||
| - split >=0.1 | - split >=0.1 | ||||||
|  | |||||||
| @ -4,7 +4,7 @@ cabal-version: 1.12 | |||||||
| -- | -- | ||||||
| -- see: https://github.com/sol/hpack | -- see: https://github.com/sol/hpack | ||||||
| -- | -- | ||||||
| -- hash: 057371c2b8cf46c32339a64339eaf98ac7247396cf8bb2dad13e99a5931cd62f | -- hash: 4e0beb8ffb64276b8f69f1bc9cf738199248509c23193799370132f748a74612 | ||||||
| 
 | 
 | ||||||
| name:           hledger-ui | name:           hledger-ui | ||||||
| version:        1.19.99 | version:        1.19.99 | ||||||
| @ -83,7 +83,6 @@ executable hledger-ui | |||||||
|     , megaparsec >=7.0.0 && <9.1 |     , megaparsec >=7.0.0 && <9.1 | ||||||
|     , microlens >=0.4 |     , microlens >=0.4 | ||||||
|     , microlens-platform >=0.2.3.1 |     , microlens-platform >=0.2.3.1 | ||||||
|     , pretty-show >=1.6.4 |  | ||||||
|     , process >=1.2 |     , process >=1.2 | ||||||
|     , safe >=0.2 |     , safe >=0.2 | ||||||
|     , split >=0.1 |     , split >=0.1 | ||||||
|  | |||||||
| @ -57,7 +57,6 @@ dependencies: | |||||||
| - microlens >=0.4 | - microlens >=0.4 | ||||||
| - microlens-platform >=0.2.3.1 | - microlens-platform >=0.2.3.1 | ||||||
| - megaparsec >=7.0.0 && <9.1 | - megaparsec >=7.0.0 && <9.1 | ||||||
| - pretty-show >=1.6.4 |  | ||||||
| - process >=1.2 | - process >=1.2 | ||||||
| - safe >=0.2 | - safe >=0.2 | ||||||
| - split >=0.1 | - split >=0.1 | ||||||
|  | |||||||
| @ -4,7 +4,7 @@ cabal-version: 1.12 | |||||||
| -- | -- | ||||||
| -- see: https://github.com/sol/hpack | -- see: https://github.com/sol/hpack | ||||||
| -- | -- | ||||||
| -- hash: 3becac2b267d30f6ce283af8e9b43dfa4f6ea374f6854da6c2272779fe3cb12c | -- hash: 4517e1a53a08aa05c53bb06d8591b5591f3ae6f688bf39f809c8f774fbd1d41c | ||||||
| 
 | 
 | ||||||
| name:           hledger | name:           hledger | ||||||
| version:        1.19.99 | version:        1.19.99 | ||||||
| @ -172,7 +172,6 @@ library | |||||||
|     , mtl >=2.2.1 |     , mtl >=2.2.1 | ||||||
|     , old-time |     , old-time | ||||||
|     , parsec >=3 |     , parsec >=3 | ||||||
|     , pretty-show >=1.6.4 |  | ||||||
|     , process |     , process | ||||||
|     , regex-tdfa |     , regex-tdfa | ||||||
|     , safe >=0.2 |     , safe >=0.2 | ||||||
| @ -223,7 +222,6 @@ executable hledger | |||||||
|     , mtl >=2.2.1 |     , mtl >=2.2.1 | ||||||
|     , old-time |     , old-time | ||||||
|     , parsec >=3 |     , parsec >=3 | ||||||
|     , pretty-show >=1.6.4 |  | ||||||
|     , process |     , process | ||||||
|     , regex-tdfa |     , regex-tdfa | ||||||
|     , safe >=0.2 |     , safe >=0.2 | ||||||
| @ -275,7 +273,6 @@ test-suite unittest | |||||||
|     , mtl >=2.2.1 |     , mtl >=2.2.1 | ||||||
|     , old-time |     , old-time | ||||||
|     , parsec >=3 |     , parsec >=3 | ||||||
|     , pretty-show >=1.6.4 |  | ||||||
|     , process |     , process | ||||||
|     , regex-tdfa |     , regex-tdfa | ||||||
|     , safe >=0.2 |     , safe >=0.2 | ||||||
| @ -326,7 +323,6 @@ benchmark bench | |||||||
|     , mtl >=2.2.1 |     , mtl >=2.2.1 | ||||||
|     , old-time |     , old-time | ||||||
|     , parsec >=3 |     , parsec >=3 | ||||||
|     , pretty-show >=1.6.4 |  | ||||||
|     , process |     , process | ||||||
|     , regex-tdfa |     , regex-tdfa | ||||||
|     , safe >=0.2 |     , safe >=0.2 | ||||||
|  | |||||||
| @ -126,7 +126,6 @@ dependencies: | |||||||
| - mtl >=2.2.1 | - mtl >=2.2.1 | ||||||
| - old-time | - old-time | ||||||
| - parsec >=3 | - parsec >=3 | ||||||
| - pretty-show >=1.6.4 |  | ||||||
| - process | - process | ||||||
| - regex-tdfa | - regex-tdfa | ||||||
| - safe >=0.2 | - safe >=0.2 | ||||||
|  | |||||||
| @ -12,8 +12,10 @@ packages: | |||||||
| - hledger-ui | - hledger-ui | ||||||
| - hledger-web | - hledger-web | ||||||
| 
 | 
 | ||||||
| # extra-deps: | extra-deps: | ||||||
| # for hledger-lib: | # for hledger-lib: | ||||||
|  | - pretty-simple-4.0.0.0 | ||||||
|  | - prettyprinter-1.7.0 | ||||||
| # for hledger: | # for hledger: | ||||||
| # for hledger-ui: | # for hledger-ui: | ||||||
| # for hledger-web: | # for hledger-web: | ||||||
|  | |||||||
| @ -78,3 +78,5 @@ extra-deps: | |||||||
| - resourcet-1.2.4 | - resourcet-1.2.4 | ||||||
| - http-conduit-1.3.0 | - http-conduit-1.3.0 | ||||||
| - monad-logger-0.3.28 | - monad-logger-0.3.28 | ||||||
|  | - pretty-simple-4.0.0.0 | ||||||
|  | - prettyprinter-1.7.0 | ||||||
|  | |||||||
| @ -12,4 +12,6 @@ packages: | |||||||
| - hledger-ui | - hledger-ui | ||||||
| - hledger-web | - hledger-web | ||||||
| 
 | 
 | ||||||
| #extra-deps: | extra-deps: | ||||||
|  | - pretty-simple-4.0.0.0 | ||||||
|  | - prettyprinter-1.7.0 | ||||||
|  | |||||||
| @ -42,3 +42,5 @@ extra-deps: | |||||||
| - streaming-commons-0.2.1.2 | - streaming-commons-0.2.1.2 | ||||||
| - network-2.7.0.0 | - network-2.7.0.0 | ||||||
| - math-functions-0.3.3.0 | - math-functions-0.3.3.0 | ||||||
|  | - pretty-simple-4.0.0.0 | ||||||
|  | - prettyprinter-1.7.0 | ||||||
|  | |||||||
| @ -25,3 +25,5 @@ extra-deps: | |||||||
| - streaming-commons-0.2.1.2 | - streaming-commons-0.2.1.2 | ||||||
| - network-2.7.0.0 | - network-2.7.0.0 | ||||||
| - math-functions-0.3.3.0 | - math-functions-0.3.3.0 | ||||||
|  | - pretty-simple-4.0.0.0 | ||||||
|  | - prettyprinter-1.7.0 | ||||||
|  | |||||||
| @ -24,6 +24,8 @@ extra-deps: | |||||||
| # - base-compat-0.11.0 | # - base-compat-0.11.0 | ||||||
| # - http-api-data-0.4.1.1 | # - http-api-data-0.4.1.1 | ||||||
| # for hledger-lib: | # for hledger-lib: | ||||||
|  | - pretty-simple-4.0.0.0 | ||||||
|  | - prettyprinter-1.7.0 | ||||||
| # for hledger: | # for hledger: | ||||||
| # for hledger-ui: | # for hledger-ui: | ||||||
| # for hledger-web: | # for hledger-web: | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user