cln: Flatten dependency tree by removing dependencies of Hledger.Reports

on Hledger.Read.

This is done by using equivalent functions/types defined elsewhere
instead.
This commit is contained in:
Stephen Morgan 2021-08-25 00:01:12 +10:00 committed by Simon Michael
parent 315e92c08b
commit 1e766e481e
3 changed files with 37 additions and 40 deletions

View File

@ -22,7 +22,6 @@ where
import Data.Time.Calendar import Data.Time.Calendar
import Hledger.Data import Hledger.Data
import Hledger.Read (mamountp')
import Hledger.Query import Hledger.Query
import Hledger.Utils import Hledger.Utils
import Hledger.Reports.MultiBalanceReport (multiBalanceReport) import Hledger.Reports.MultiBalanceReport (multiBalanceReport)
@ -119,46 +118,46 @@ tests_BalanceReport = testGroup "BalanceReport" [
,testCase "no args, sample journal" $ ,testCase "no args, sample journal" $
(defreportspec, samplejournal) `gives` (defreportspec, samplejournal) `gives`
([ ([
("assets:bank:checking","assets:bank:checking",0, mamountp' "$1.00") ("assets:bank:checking","assets:bank:checking",0, mixedAmount (usd 1))
,("assets:bank:saving","assets:bank:saving",0, mamountp' "$1.00") ,("assets:bank:saving","assets:bank:saving",0, mixedAmount (usd 1))
,("assets:cash","assets:cash",0, mamountp' "$-2.00") ,("assets:cash","assets:cash",0, mixedAmount (usd (-2)))
,("expenses:food","expenses:food",0, mamountp' "$1.00") ,("expenses:food","expenses:food",0, mixedAmount (usd 1))
,("expenses:supplies","expenses:supplies",0, mamountp' "$1.00") ,("expenses:supplies","expenses:supplies",0, mixedAmount (usd 1))
,("income:gifts","income:gifts",0, mamountp' "$-1.00") ,("income:gifts","income:gifts",0, mixedAmount (usd (-1)))
,("income:salary","income:salary",0, mamountp' "$-1.00") ,("income:salary","income:salary",0, mixedAmount (usd (-1)))
], ],
mixedAmount (usd 0)) mixedAmount (usd 0))
,testCase "with --tree" $ ,testCase "with --tree" $
(defreportspec{_rsReportOpts=defreportopts{accountlistmode_=ALTree}}, samplejournal) `gives` (defreportspec{_rsReportOpts=defreportopts{accountlistmode_=ALTree}}, samplejournal) `gives`
([ ([
("assets","assets",0, mamountp' "$0.00") ("assets","assets",0, mixedAmount (usd 0))
,("assets:bank","bank",1, mamountp' "$2.00") ,("assets:bank","bank",1, mixedAmount (usd 2))
,("assets:bank:checking","checking",2, mamountp' "$1.00") ,("assets:bank:checking","checking",2, mixedAmount (usd 1))
,("assets:bank:saving","saving",2, mamountp' "$1.00") ,("assets:bank:saving","saving",2, mixedAmount (usd 1))
,("assets:cash","cash",1, mamountp' "$-2.00") ,("assets:cash","cash",1, mixedAmount (usd (-2)))
,("expenses","expenses",0, mamountp' "$2.00") ,("expenses","expenses",0, mixedAmount (usd 2))
,("expenses:food","food",1, mamountp' "$1.00") ,("expenses:food","food",1, mixedAmount (usd 1))
,("expenses:supplies","supplies",1, mamountp' "$1.00") ,("expenses:supplies","supplies",1, mixedAmount (usd 1))
,("income","income",0, mamountp' "$-2.00") ,("income","income",0, mixedAmount (usd (-2)))
,("income:gifts","gifts",1, mamountp' "$-1.00") ,("income:gifts","gifts",1, mixedAmount (usd (-1)))
,("income:salary","salary",1, mamountp' "$-1.00") ,("income:salary","salary",1, mixedAmount (usd (-1)))
], ],
mixedAmount (usd 0)) mixedAmount (usd 0))
,testCase "with --depth=N" $ ,testCase "with --depth=N" $
(defreportspec{_rsReportOpts=defreportopts{depth_=Just 1}}, samplejournal) `gives` (defreportspec{_rsReportOpts=defreportopts{depth_=Just 1}}, samplejournal) `gives`
([ ([
("expenses", "expenses", 0, mamountp' "$2.00") ("expenses", "expenses", 0, mixedAmount (usd 2))
,("income", "income", 0, mamountp' "$-2.00") ,("income", "income", 0, mixedAmount (usd (-2)))
], ],
mixedAmount (usd 0)) mixedAmount (usd 0))
,testCase "with depth:N" $ ,testCase "with depth:N" $
(defreportspec{_rsQuery=Depth 1}, samplejournal) `gives` (defreportspec{_rsQuery=Depth 1}, samplejournal) `gives`
([ ([
("expenses", "expenses", 0, mamountp' "$2.00") ("expenses", "expenses", 0, mixedAmount (usd 2))
,("income", "income", 0, mamountp' "$-2.00") ,("income", "income", 0, mixedAmount (usd (-2)))
], ],
mixedAmount (usd 0)) mixedAmount (usd 0))
@ -169,27 +168,27 @@ tests_BalanceReport = testGroup "BalanceReport" [
,testCase "with date2:" $ ,testCase "with date2:" $
(defreportspec{_rsQuery=Date2 $ DateSpan (Just $ fromGregorian 2009 01 01) (Just $ fromGregorian 2010 01 01)}, samplejournal2) `gives` (defreportspec{_rsQuery=Date2 $ DateSpan (Just $ fromGregorian 2009 01 01) (Just $ fromGregorian 2010 01 01)}, samplejournal2) `gives`
([ ([
("assets:bank:checking","assets:bank:checking",0,mamountp' "$1.00") ("assets:bank:checking","assets:bank:checking",0,mixedAmount (usd 1))
,("income:salary","income:salary",0,mamountp' "$-1.00") ,("income:salary","income:salary",0,mixedAmount (usd (-1)))
], ],
mixedAmount (usd 0)) mixedAmount (usd 0))
,testCase "with desc:" $ ,testCase "with desc:" $
(defreportspec{_rsQuery=Desc $ toRegexCI' "income"}, samplejournal) `gives` (defreportspec{_rsQuery=Desc $ toRegexCI' "income"}, samplejournal) `gives`
([ ([
("assets:bank:checking","assets:bank:checking",0,mamountp' "$1.00") ("assets:bank:checking","assets:bank:checking",0,mixedAmount (usd 1))
,("income:salary","income:salary",0, mamountp' "$-1.00") ,("income:salary","income:salary",0, mixedAmount (usd (-1)))
], ],
mixedAmount (usd 0)) mixedAmount (usd 0))
,testCase "with not:desc:" $ ,testCase "with not:desc:" $
(defreportspec{_rsQuery=Not . Desc $ toRegexCI' "income"}, samplejournal) `gives` (defreportspec{_rsQuery=Not . Desc $ toRegexCI' "income"}, samplejournal) `gives`
([ ([
("assets:bank:saving","assets:bank:saving",0, mamountp' "$1.00") ("assets:bank:saving","assets:bank:saving",0, mixedAmount (usd 1))
,("assets:cash","assets:cash",0, mamountp' "$-2.00") ,("assets:cash","assets:cash",0, mixedAmount (usd (-2)))
,("expenses:food","expenses:food",0, mamountp' "$1.00") ,("expenses:food","expenses:food",0, mixedAmount (usd 1))
,("expenses:supplies","expenses:supplies",0, mamountp' "$1.00") ,("expenses:supplies","expenses:supplies",0, mixedAmount (usd 1))
,("income:gifts","income:gifts",0, mamountp' "$-1.00") ,("income:gifts","income:gifts",0, mixedAmount (usd (-1)))
], ],
mixedAmount (usd 0)) mixedAmount (usd 0))
@ -197,8 +196,8 @@ tests_BalanceReport = testGroup "BalanceReport" [
(defreportspec{_rsReportOpts=defreportopts{period_= PeriodBetween (fromGregorian 2008 1 1) (fromGregorian 2008 1 2)}}, samplejournal) `gives` (defreportspec{_rsReportOpts=defreportopts{period_= PeriodBetween (fromGregorian 2008 1 1) (fromGregorian 2008 1 2)}}, samplejournal) `gives`
( (
[ [
("assets:bank:checking","assets:bank:checking",0, mamountp' "$1.00") ("assets:bank:checking","assets:bank:checking",0, mixedAmount (usd 1))
,("income:salary","income:salary",0, mamountp' "$-1.00") ,("income:salary","income:salary",0, mixedAmount (usd (-1)))
], ],
mixedAmount (usd 0)) mixedAmount (usd 0))

View File

@ -42,7 +42,6 @@ import Text.Tabular.AsciiWide as Tab
import Hledger.Data import Hledger.Data
import Hledger.Utils import Hledger.Utils
import Hledger.Read.CsvReader (CSV)
import Hledger.Reports.ReportOptions import Hledger.Reports.ReportOptions
import Hledger.Reports.ReportTypes import Hledger.Reports.ReportTypes
import Hledger.Reports.MultiBalanceReport import Hledger.Reports.MultiBalanceReport
@ -401,7 +400,7 @@ budgetReportAsTable
-- XXX generalise this with multiBalanceReportAsCsv ? -- XXX generalise this with multiBalanceReportAsCsv ?
-- | Render a budget report as CSV. Like multiBalanceReportAsCsv, -- | Render a budget report as CSV. Like multiBalanceReportAsCsv,
-- but includes alternating actual and budget amount columns. -- but includes alternating actual and budget amount columns.
budgetReportAsCsv :: ReportOpts -> BudgetReport -> CSV budgetReportAsCsv :: ReportOpts -> BudgetReport -> [[Text]]
budgetReportAsCsv budgetReportAsCsv
ReportOpts{..} ReportOpts{..}
(PeriodicReport colspans items tr) (PeriodicReport colspans items tr)

View File

@ -59,7 +59,6 @@ import Hledger.Data
import Hledger.Query import Hledger.Query
import Hledger.Utils hiding (dbg3,dbg4,dbg5) import Hledger.Utils hiding (dbg3,dbg4,dbg5)
import qualified Hledger.Utils import qualified Hledger.Utils
import Hledger.Read (mamountp')
import Hledger.Reports.ReportOptions import Hledger.Reports.ReportOptions
import Hledger.Reports.ReportTypes import Hledger.Reports.ReportTypes
@ -606,10 +605,10 @@ tests_MultiBalanceReport = testGroup "MultiBalanceReport" [
,testCase "with -H on a populated period" $ ,testCase "with -H on a populated period" $
(defreportspec{_rsReportOpts=defreportopts{period_= PeriodBetween (fromGregorian 2008 1 1) (fromGregorian 2008 1 2), balanceaccum_=Historical}}, samplejournal) `gives` (defreportspec{_rsReportOpts=defreportopts{period_= PeriodBetween (fromGregorian 2008 1 1) (fromGregorian 2008 1 2), balanceaccum_=Historical}}, samplejournal) `gives`
( (
[ PeriodicReportRow (flatDisplayName "assets:bank:checking") [mamountp' "$1.00"] (mamountp' "$1.00") (mixedAmount amt0{aquantity=1}) [ PeriodicReportRow (flatDisplayName "assets:bank:checking") [mixedAmount $ usd 1] (mixedAmount $ usd 1) (mixedAmount amt0{aquantity=1})
, PeriodicReportRow (flatDisplayName "income:salary") [mamountp' "$-1.00"] (mamountp' "$-1.00") (mixedAmount amt0{aquantity=(-1)}) , PeriodicReportRow (flatDisplayName "income:salary") [mixedAmount $ usd (-1)] (mixedAmount $ usd (-1)) (mixedAmount amt0{aquantity=(-1)})
], ],
mamountp' "$0.00") mixedAmount $ usd 0)
-- ,testCase "a valid history on an empty period" $ -- ,testCase "a valid history on an empty period" $
-- (defreportopts{period_= PeriodBetween (fromGregorian 2008 1 2) (fromGregorian 2008 1 3), balanceaccum_=Historical}, samplejournal) `gives` -- (defreportopts{period_= PeriodBetween (fromGregorian 2008 1 2) (fromGregorian 2008 1 3), balanceaccum_=Historical}, samplejournal) `gives`