lib: Remove some uses of pad(Left|Right)Wide to ensure we're using the
width provided by showMixed. Also refactor renderTable to be a bit clearer, and to avoid duplicate calculations.
This commit is contained in:
parent
e9a16edb58
commit
7e47c11fda
@ -168,7 +168,7 @@ showPosting p@Posting{paccount=a,pamount=amt,ptype=t} =
|
|||||||
BalancedVirtualPosting -> (\s -> "["++s++"]", acctnamewidth-2)
|
BalancedVirtualPosting -> (\s -> "["++s++"]", acctnamewidth-2)
|
||||||
VirtualPosting -> (\s -> "("++s++")", acctnamewidth-2)
|
VirtualPosting -> (\s -> "("++s++")", acctnamewidth-2)
|
||||||
_ -> (id,acctnamewidth)
|
_ -> (id,acctnamewidth)
|
||||||
showamount = padLeftWide 12 . showMixedAmount
|
showamount = fst . showMixed showAmount (Just 12) Nothing False
|
||||||
|
|
||||||
|
|
||||||
showComment :: Text -> String
|
showComment :: Text -> String
|
||||||
|
|||||||
@ -22,27 +22,32 @@ renderTable :: Bool -- ^ Whether to display the outer borders
|
|||||||
-> String
|
-> String
|
||||||
renderTable borders pretty fr fc f (Table rh ch cells) =
|
renderTable borders pretty fr fc f (Table rh ch cells) =
|
||||||
unlines . addBorders $
|
unlines . addBorders $
|
||||||
[ renderColumns borders pretty sizes ch2
|
renderColumns borders pretty sizes ch2
|
||||||
, bar VM DoubleLine -- +======================================+
|
: bar VM DoubleLine -- +======================================+
|
||||||
] ++
|
: renderRs (fmap renderR $ zipHeader [] cellContents rowHeaders)
|
||||||
(renderRs $ fmap renderR $ zipHeader [] cells $ fmap fr rh)
|
|
||||||
where
|
where
|
||||||
bar vpos prop = concat $ renderHLine vpos borders pretty sizes ch2 prop
|
|
||||||
-- ch2 and cell2 include the row and column labels
|
|
||||||
ch2 = Group DoubleLine [Header emptyCell, fmap fc ch]
|
|
||||||
cells2 = headerContents ch2
|
|
||||||
: zipWith (\h cs -> h : map f cs) rhStrings cells
|
|
||||||
--
|
|
||||||
renderR (cs,h) = renderColumns borders pretty sizes $ Group DoubleLine
|
renderR (cs,h) = renderColumns borders pretty sizes $ Group DoubleLine
|
||||||
[ Header h
|
[ Header h
|
||||||
, fmap fst $ zipHeader emptyCell (map f cs) ch]
|
, fmap fst $ zipHeader emptyCell cs colHeaders
|
||||||
rhStrings = map fr $ headerContents rh
|
]
|
||||||
|
|
||||||
|
rowHeaders = fmap fr rh
|
||||||
|
colHeaders = fmap fc ch
|
||||||
|
cellContents = map (map f) cells
|
||||||
|
|
||||||
|
-- ch2 and cell2 include the row and column labels
|
||||||
|
ch2 = Group DoubleLine [Header emptyCell, colHeaders]
|
||||||
|
cells2 = headerContents ch2 : zipWith (:) (headerContents rowHeaders) cellContents
|
||||||
|
|
||||||
-- maximum width for each column
|
-- maximum width for each column
|
||||||
sizes = map (maximum . map csWidth) $ transpose cells2
|
sizes = map (maximum . map csWidth) $ transpose cells2
|
||||||
renderRs (Header s) = [s]
|
renderRs (Header s) = [s]
|
||||||
renderRs (Group p hs) = concat . intersperse sep $ map renderRs hs
|
renderRs (Group p hs) = concat . intersperse sep $ map renderRs hs
|
||||||
where sep = renderHLine VM borders pretty sizes ch2 p
|
where sep = renderHLine VM borders pretty sizes ch2 p
|
||||||
|
|
||||||
|
-- borders and bars
|
||||||
addBorders xs = if borders then bar VT SingleLine : xs ++ [bar VB SingleLine] else xs
|
addBorders xs = if borders then bar VT SingleLine : xs ++ [bar VB SingleLine] else xs
|
||||||
|
bar vpos prop = concat $ renderHLine vpos borders pretty sizes ch2 prop
|
||||||
|
|
||||||
|
|
||||||
data CellSpec = CellSpec
|
data CellSpec = CellSpec
|
||||||
@ -90,8 +95,8 @@ renderColumns borders pretty is h = addBorders coreLine
|
|||||||
addBorders xs = if borders then leftBar pretty ++ xs ++ rightBar pretty else ' ' : xs ++ " "
|
addBorders xs = if borders then leftBar pretty ++ xs ++ rightBar pretty else ' ' : xs ++ " "
|
||||||
coreLine = concatMap helper $ flattenHeader $ zipHeader 0 is h
|
coreLine = concatMap helper $ flattenHeader $ zipHeader 0 is h
|
||||||
helper = either hsep (\(w, cs) -> case csAlign cs of
|
helper = either hsep (\(w, cs) -> case csAlign cs of
|
||||||
AlignLeft -> padRightWide w (csString cs)
|
AlignLeft -> csString cs ++ replicate (w - csWidth cs) ' '
|
||||||
AlignRight -> padLeftWide w (csString cs)
|
AlignRight -> replicate (w - csWidth cs) ' ' ++ csString cs
|
||||||
)
|
)
|
||||||
hsep :: Properties -> String
|
hsep :: Properties -> String
|
||||||
hsep NoLine = " "
|
hsep NoLine = " "
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user