apply --depth to print command
This commit is contained in:
parent
80a0653b3e
commit
bd8dcefd9d
@ -106,6 +106,14 @@ filterRawLedgerTransactionsByRealness True (RawLedger ms ps es tls hs f) =
|
||||
RawLedger ms ps (map filtertxns es) tls hs f
|
||||
where filtertxns e@Entry{etransactions=ts} = e{etransactions=filter isReal ts}
|
||||
|
||||
-- | Strip out any transactions to accounts deeper than the specified depth
|
||||
-- (and any entries which have no transactions as a result).
|
||||
filterRawLedgerTransactionsByDepth :: Int -> RawLedger -> RawLedger
|
||||
filterRawLedgerTransactionsByDepth depth (RawLedger ms ps es tls hs f) =
|
||||
RawLedger ms ps (filter (not . null . etransactions) $ map filtertxns es) tls hs f
|
||||
where filtertxns e@Entry{etransactions=ts} =
|
||||
e{etransactions=filter ((<= depth) . accountNameLevel . taccount) ts}
|
||||
|
||||
-- | Keep only entries which affect accounts matched by the account patterns.
|
||||
filterRawLedgerEntriesByAccount :: [String] -> RawLedger -> RawLedger
|
||||
filterRawLedgerEntriesByAccount apats (RawLedger ms ps es tls hs f) =
|
||||
|
||||
@ -17,5 +17,9 @@ print' opts args l = putStr $ showEntries opts args l
|
||||
showEntries :: [Opt] -> [String] -> Ledger -> String
|
||||
showEntries opts args l = concatMap showEntry $ filteredentries
|
||||
where
|
||||
filteredentries = entries $ filterRawLedgerEntriesByAccount apats $ rawledger l
|
||||
filteredentries = entries $
|
||||
filterRawLedgerTransactionsByDepth depth $
|
||||
filterRawLedgerEntriesByAccount apats $
|
||||
rawledger l
|
||||
depth = depthFromOpts opts
|
||||
(apats,_) = parseAccountDescriptionArgs opts args
|
||||
|
||||
30
Tests.hs
30
Tests.hs
@ -196,7 +196,7 @@ tests = [
|
||||
]
|
||||
|
||||
,"balance report with negative account pattern" ~:
|
||||
([], ["^assets"]) `gives`
|
||||
([], ["not:assets"]) `gives`
|
||||
[" $2 expenses"
|
||||
," $-2 income"
|
||||
," $1 liabilities"
|
||||
@ -205,10 +205,10 @@ tests = [
|
||||
]
|
||||
|
||||
,"balance report negative account pattern always matches full name" ~:
|
||||
([], ["^e"]) `gives` []
|
||||
([], ["not:e"]) `gives` []
|
||||
|
||||
,"balance report negative patterns affect totals" ~:
|
||||
([], ["expenses","^food"]) `gives`
|
||||
([], ["expenses","not:food"]) `gives`
|
||||
[" $1 expenses"
|
||||
,"--------------------"
|
||||
," $1"
|
||||
@ -381,7 +381,7 @@ tests = [
|
||||
"daily from aug" `gives` "(Daily,DateSpan (Just 2008-08-01) Nothing)"
|
||||
"every week to 2009" `gives` "(Weekly,DateSpan Nothing (Just 2009-01-01))"
|
||||
|
||||
,"print command tests" ~: TestList
|
||||
,"print report tests" ~: TestList
|
||||
[
|
||||
|
||||
"print expenses" ~:
|
||||
@ -395,6 +395,27 @@ tests = [
|
||||
," assets:cash $-2"
|
||||
,""
|
||||
]
|
||||
|
||||
, "print report with depth arg" ~:
|
||||
do
|
||||
l <- sampleledger
|
||||
showEntries [Depth "2"] [] l `is` unlines
|
||||
["2008/01/01 income"
|
||||
," income:salary $-1"
|
||||
,""
|
||||
,"2008/06/01 gift"
|
||||
," 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"
|
||||
,""
|
||||
]
|
||||
|
||||
]
|
||||
|
||||
,"punctuatethousands 1" ~: punctuatethousands "" `is` ""
|
||||
@ -488,7 +509,6 @@ tests = [
|
||||
,"2008/12/31 pay off liabilities:debts $1 $-1"
|
||||
]
|
||||
|
||||
|
||||
,"show dollars" ~: show (dollars 1) ~?= "$1.00"
|
||||
|
||||
,"show hours" ~: show (hours 1) ~?= "1.0h"
|
||||
|
||||
Loading…
Reference in New Issue
Block a user