balance: with --flat, --drop N elides leading account name components. Feature or frill ?
This commit is contained in:
parent
5d7f141239
commit
73572e2d85
@ -140,7 +140,7 @@ showInterestingAccount opts l interestingaccts a = concatTopPadded [amt, " ", n
|
||||
bal | Flat `elem` opts = exclusiveBalance acct
|
||||
| otherwise = abalance acct
|
||||
acct = ledgerAccount l a
|
||||
name | Flat `elem` opts = a
|
||||
name | Flat `elem` opts = accountNameDrop (dropFromOpts opts) a
|
||||
| otherwise = depthspacer ++ partialname
|
||||
parents = parentAccountNames a
|
||||
interestingparents = filter (`elem` interestingaccts) parents
|
||||
|
||||
@ -76,6 +76,7 @@ options = [
|
||||
,Option "E" ["empty"] (NoArg Empty) "show empty/zero things which are normally elided"
|
||||
,Option "R" ["real"] (NoArg Real) "report only on real (non-virtual) transactions"
|
||||
,Option "" ["flat"] (NoArg Flat) "balance report: show full account names, unindented"
|
||||
,Option "" ["drop"] (ReqArg Drop "N") "balance report: with --flat, elide first N account name components"
|
||||
,Option "" ["no-total"] (NoArg NoTotal) "balance report: hide the final total"
|
||||
-- ,Option "s" ["subtotal"] (NoArg SubTotal) "balance report: show subaccounts"
|
||||
,Option "W" ["weekly"] (NoArg WeeklyOpt) "register report: show weekly summary"
|
||||
@ -115,6 +116,7 @@ data Opt =
|
||||
Empty |
|
||||
Real |
|
||||
Flat |
|
||||
Drop {value::String} |
|
||||
NoTotal |
|
||||
SubTotal |
|
||||
WeeklyOpt |
|
||||
@ -212,13 +214,20 @@ intervalFromOpts opts =
|
||||
periodopts = reverse $ optValuesForConstructor Period opts
|
||||
intervalopts = reverse $ filter (`elem` [WeeklyOpt,MonthlyOpt,QuarterlyOpt,YearlyOpt]) opts
|
||||
|
||||
-- | Get the value of the (last) depth option, if any, otherwise a large number.
|
||||
-- | Get the value of the (last) depth option, if any.
|
||||
depthFromOpts :: [Opt] -> Maybe Int
|
||||
depthFromOpts opts = listtomaybeint $ optValuesForConstructor Depth opts
|
||||
where
|
||||
listtomaybeint [] = Nothing
|
||||
listtomaybeint vs = Just $ read $ last vs
|
||||
|
||||
-- | Get the value of the (last) drop option, if any, otherwise 0.
|
||||
dropFromOpts :: [Opt] -> Int
|
||||
dropFromOpts opts = fromMaybe 0 $ listtomaybeint $ optValuesForConstructor Drop opts
|
||||
where
|
||||
listtomaybeint [] = Nothing
|
||||
listtomaybeint vs = Just $ read $ last vs
|
||||
|
||||
-- | Get the value of the (last) display option, if any.
|
||||
displayExprFromOpts :: [Opt] -> Maybe String
|
||||
displayExprFromOpts opts = listtomaybe $ optValuesForConstructor Display opts
|
||||
|
||||
@ -282,13 +282,16 @@ Examples:
|
||||
$ hledger balance food -p 'last month'
|
||||
|
||||
A final total is displayed, use `--no-total` to suppress this. Also, the
|
||||
`--depth` option shows accounts only to the specified depth, useful for an overview:
|
||||
`--depth N` option shows accounts only to the specified depth, useful for
|
||||
an overview:
|
||||
|
||||
$ for y in 2006 2007 2008 2009 2010; do echo; echo $y; hledger -f $y.ledger balance ^expenses --depth 2; done
|
||||
|
||||
With `--flat`, a non-hierarchical list of full account names is displayed
|
||||
instead. This mode shows just the accounts actually contributing to the
|
||||
balance, making the arithmetic a little more obvious to non-hledger users.
|
||||
In this mode you can also use `--drop N` to elide the first few account
|
||||
name components.
|
||||
|
||||
##### chart
|
||||
|
||||
|
||||
@ -32,6 +32,9 @@ accountNameLevel :: AccountName -> Int
|
||||
accountNameLevel "" = 0
|
||||
accountNameLevel a = length (filter (==acctsepchar) a) + 1
|
||||
|
||||
accountNameDrop :: Int -> AccountName -> AccountName
|
||||
accountNameDrop n = accountNameFromComponents . drop n . accountNameComponents
|
||||
|
||||
-- | ["a:b:c","d:e"] -> ["a","a:b","a:b:c","d","d:e"]
|
||||
expandAccountNames :: [AccountName] -> [AccountName]
|
||||
expandAccountNames as = nub $ concatMap expand as
|
||||
|
||||
Loading…
Reference in New Issue
Block a user