mirror of
https://github.com/simonmichael/hledger.git
synced 2024-11-07 21:15:19 +03:00
cli: Ensure register reports are correctly aligned for negative numbers.
This uses the new showMixed* function for the register report. This fixes some misaligned negative numbers which appeared in one of the earlier commits, and adds a test for it.
This commit is contained in:
parent
162a936360
commit
a838366c9d
@ -92,8 +92,8 @@ postingsReportItemAsCsvRecord (_, _, _, p, b) = [idx,date,code,desc,acct,amt,bal
|
||||
postingsReportAsText :: CliOpts -> PostingsReport -> String
|
||||
postingsReportAsText opts (_,items) = unlines $ map (postingsReportItemAsText opts amtwidth balwidth) items
|
||||
where
|
||||
amtwidth = maximumStrict $ 12 : map (strWidth . showMixedAmount . itemamt) items
|
||||
balwidth = maximumStrict $ 12 : map (strWidth . showMixedAmount . itembal) items
|
||||
amtwidth = maximumStrict $ map (snd . showMixed showAmount (Just 12) Nothing False . itemamt) items
|
||||
balwidth = maximumStrict $ map (snd . showMixed showAmount (Just 12) Nothing False . itembal) items
|
||||
itemamt (_,_,_,Posting{pamount=a},_) = a
|
||||
itembal (_,_,_,_,a) = a
|
||||
|
||||
@ -130,15 +130,15 @@ postingsReportItemAsText opts preferredamtwidth preferredbalwidth (mdate, mendda
|
||||
," "
|
||||
,fitString (Just acctwidth) (Just acctwidth) True True acct
|
||||
," "
|
||||
,fitString (Just amtwidth) (Just amtwidth) True False amtfirstline
|
||||
,amtfirstline
|
||||
," "
|
||||
,fitString (Just balwidth) (Just balwidth) True False balfirstline
|
||||
,balfirstline
|
||||
]
|
||||
:
|
||||
[concat [spacer
|
||||
,fitString (Just amtwidth) (Just amtwidth) True False a
|
||||
,a
|
||||
," "
|
||||
,fitString (Just balwidth) (Just balwidth) True False b
|
||||
,b
|
||||
]
|
||||
| (a,b) <- zip amtrest balrest
|
||||
]
|
||||
@ -178,17 +178,16 @@ postingsReportItemAsText opts preferredamtwidth preferredbalwidth (mdate, mendda
|
||||
BalancedVirtualPosting -> (\s -> "["++s++"]", acctwidth-2)
|
||||
VirtualPosting -> (\s -> "("++s++")", acctwidth-2)
|
||||
_ -> (id,acctwidth)
|
||||
showamt = showMixedAmountWithoutPrice (color_ . rsOpts $ reportspec_ opts)
|
||||
amt = showamt $ pamount p
|
||||
bal = showamt b
|
||||
amt = fst $ showMixed showAmountWithoutPrice (Just amtwidth) (Just amtwidth) (color_ . rsOpts $ reportspec_ opts) $ pamount p
|
||||
bal = fst $ showMixed showAmountWithoutPrice (Just balwidth) (Just balwidth) (color_ . rsOpts $ reportspec_ opts) b
|
||||
-- alternate behaviour, show null amounts as 0 instead of blank
|
||||
-- amt = if null amt' then "0" else amt'
|
||||
-- bal = if null bal' then "0" else bal'
|
||||
(amtlines, ballines) = (lines amt, lines bal)
|
||||
(amtlen, ballen) = (length amtlines, length ballines)
|
||||
numlines = max 1 (max amtlen ballen)
|
||||
(amtfirstline:amtrest) = take numlines $ amtlines ++ repeat "" -- posting amount is top-aligned
|
||||
(balfirstline:balrest) = take numlines $ replicate (numlines - ballen) "" ++ ballines -- balance amount is bottom-aligned
|
||||
(amtfirstline:amtrest) = take numlines $ amtlines ++ repeat (replicate amtwidth ' ') -- posting amount is top-aligned
|
||||
(balfirstline:balrest) = take numlines $ replicate (numlines - ballen) (replicate balwidth ' ') ++ ballines -- balance amount is bottom-aligned
|
||||
spacer = replicate (totalwidth - (amtwidth + 2 + balwidth)) ' '
|
||||
|
||||
-- tests
|
||||
|
18
tests/register/colour.test
Normal file
18
tests/register/colour.test
Normal file
@ -0,0 +1,18 @@
|
||||
2019-1-1
|
||||
(a) -1.0
|
||||
|
||||
2019-1-2
|
||||
(a) 1
|
||||
|
||||
2019-1-3
|
||||
(a) 1
|
||||
|
||||
2019-1-4
|
||||
(a) 1
|
||||
|
||||
$ hledger -f- register --color always
|
||||
2019-01-01 (a) [31m-1.0[m [31m-1.0[m
|
||||
2019-01-02 (a) 1.0 0
|
||||
2019-01-03 (a) 1.0 1.0
|
||||
2019-01-04 (a) 1.0 2.0
|
||||
>=
|
Loading…
Reference in New Issue
Block a user