87 lines
2.3 KiB
Haskell
87 lines
2.3 KiB
Haskell
{-|
|
|
|
|
A ledger-compatible @print@ command.
|
|
|
|
-}
|
|
|
|
module Hledger.Cli.Print (
|
|
printmode
|
|
,print'
|
|
,tests_Hledger_Cli_Print
|
|
)
|
|
where
|
|
|
|
import Data.List
|
|
import System.Console.CmdArgs.Explicit
|
|
import Test.HUnit
|
|
|
|
import Hledger
|
|
import Prelude hiding (putStr)
|
|
import Hledger.Utils.UTF8IOCompat (putStr)
|
|
import Hledger.Cli.Options
|
|
|
|
|
|
printmode = (defCommandMode $ ["print"] ++ aliases) {
|
|
modeHelp = "show transaction entries" `withAliases` aliases
|
|
,modeGroupFlags = Group {
|
|
groupUnnamed = []
|
|
,groupHidden = []
|
|
,groupNamed = [generalflagsgroup1]
|
|
}
|
|
}
|
|
where aliases = []
|
|
|
|
-- | Print journal transactions in standard format.
|
|
print' :: CliOpts -> Journal -> IO ()
|
|
print' CliOpts{reportopts_=ropts} j = do
|
|
d <- getCurrentDay
|
|
let q = queryFromOpts d ropts
|
|
putStr $ entriesReportAsText ropts q $ entriesReport ropts q j
|
|
|
|
entriesReportAsText :: ReportOpts -> Query -> EntriesReport -> String
|
|
entriesReportAsText _ _ items = concatMap showTransactionUnelided items
|
|
|
|
-- XXX
|
|
-- tests_showTransactions = [
|
|
-- "showTransactions" ~: do
|
|
|
|
-- -- "print expenses" ~:
|
|
-- 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"
|
|
-- ,""
|
|
-- ]
|
|
|
|
-- -- , "print report with depth arg" ~:
|
|
-- 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"
|
|
-- ,""
|
|
-- ]
|
|
-- ]
|
|
|
|
tests_Hledger_Cli_Print = TestList []
|
|
-- tests_showTransactions
|