module Hledger.Cli.Print (
print'
,showTransactions
,tests_Hledger_Cli_Print
) where
import Data.List
import Test.HUnit
import Hledger
import Prelude hiding (putStr)
import Hledger.Utils.UTF8IOCompat (putStr)
import Hledger.Cli.Options
print' :: CliOpts -> Journal -> IO ()
print' CliOpts{reportopts_=ropts} j = do
d <- getCurrentDay
putStr $ showTransactions ropts (queryFromOpts d ropts) j
showTransactions :: ReportOpts -> Query -> Journal -> String
showTransactions opts q j = entriesReportAsText opts q $ entriesReport opts q j
tests_showTransactions = [
"showTransactions" ~: do
do
let opts = defreportopts{query_="expenses"}
d <- getCurrentDay
showTransactions opts (queryFromOpts d opts) samplejournal `is` unlines
["2008/06/03 * eat & shop"
," expenses:food $1"
," expenses:supplies $1"
," assets:cash $-2"
,""
]
do
let opts = defreportopts{depth_=Just 2}
d <- getCurrentDay
showTransactions opts (queryFromOpts d opts) samplejournal `is` unlines
["2008/01/01 income"
," assets:bank:checking $1"
," income:salary $-1"
,""
,"2008/06/01 gift"
," assets:bank:checking $1"
," income:gifts $-1"
,""
,"2008/06/03 * eat & shop"
," expenses:food $1"
," expenses:supplies $1"
," assets:cash $-2"
,""
,"2008/12/31 * pay off"
," liabilities:debts $1"
," assets:bank:checking $-1"
,""
]
]
entriesReportAsText :: ReportOpts -> Query -> EntriesReport -> String
entriesReportAsText _ _ items = concatMap showTransactionUnelided items
tests_Hledger_Cli_Print = TestList
tests_showTransactions