diff --git a/hledger-lib/Hledger/Write/Spreadsheet.hs b/hledger-lib/Hledger/Write/Spreadsheet.hs index 8da63fddd..c3e4cb205 100644 --- a/hledger-lib/Hledger/Write/Spreadsheet.hs +++ b/hledger-lib/Hledger/Write/Spreadsheet.hs @@ -13,10 +13,14 @@ module Hledger.Write.Spreadsheet ( noBorder, defaultCell, emptyCell, + transposeCell, + transpose, ) where import Hledger.Data.Types (Amount) +import qualified Data.List as List + data Type = TypeString @@ -66,6 +70,10 @@ instance Foldable Border where noBorder :: (Lines border) => Border border noBorder = pure noLine +transposeBorder :: Border lines -> Border lines +transposeBorder (Border left right top bottom) = + Border top bottom left right + data Cell border text = Cell { @@ -90,3 +98,10 @@ defaultCell text = emptyCell :: (Lines border, Monoid text) => Cell border text emptyCell = defaultCell mempty + +transposeCell :: Cell border text -> Cell border text +transposeCell cell = + cell {cellBorder = transposeBorder $ cellBorder cell} + +transpose :: [[Cell border text]] -> [[Cell border text]] +transpose = List.transpose . map (map transposeCell) diff --git a/hledger/Hledger/Cli/Commands/Balance.hs b/hledger/Hledger/Cli/Commands/Balance.hs index fb2d1f56d..5635fb3f7 100644 --- a/hledger/Hledger/Cli/Commands/Balance.hs +++ b/hledger/Hledger/Cli/Commands/Balance.hs @@ -1223,7 +1223,7 @@ budgetReportAsSpreadsheet :: budgetReportAsSpreadsheet ReportOpts{..} (PeriodicReport colspans items totrow) - = (if transpose_ then transpose else id) $ + = (if transpose_ then Ods.transpose else id) $ -- heading row (map headerCell $