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
|
bal | Flat `elem` opts = exclusiveBalance acct
|
||||||
| otherwise = abalance acct
|
| otherwise = abalance acct
|
||||||
acct = ledgerAccount l a
|
acct = ledgerAccount l a
|
||||||
name | Flat `elem` opts = a
|
name | Flat `elem` opts = accountNameDrop (dropFromOpts opts) a
|
||||||
| otherwise = depthspacer ++ partialname
|
| otherwise = depthspacer ++ partialname
|
||||||
parents = parentAccountNames a
|
parents = parentAccountNames a
|
||||||
interestingparents = filter (`elem` interestingaccts) parents
|
interestingparents = filter (`elem` interestingaccts) parents
|
||||||
|
|||||||
@ -76,6 +76,7 @@ options = [
|
|||||||
,Option "E" ["empty"] (NoArg Empty) "show empty/zero things which are normally elided"
|
,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 "R" ["real"] (NoArg Real) "report only on real (non-virtual) transactions"
|
||||||
,Option "" ["flat"] (NoArg Flat) "balance report: show full account names, unindented"
|
,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 "" ["no-total"] (NoArg NoTotal) "balance report: hide the final total"
|
||||||
-- ,Option "s" ["subtotal"] (NoArg SubTotal) "balance report: show subaccounts"
|
-- ,Option "s" ["subtotal"] (NoArg SubTotal) "balance report: show subaccounts"
|
||||||
,Option "W" ["weekly"] (NoArg WeeklyOpt) "register report: show weekly summary"
|
,Option "W" ["weekly"] (NoArg WeeklyOpt) "register report: show weekly summary"
|
||||||
@ -115,6 +116,7 @@ data Opt =
|
|||||||
Empty |
|
Empty |
|
||||||
Real |
|
Real |
|
||||||
Flat |
|
Flat |
|
||||||
|
Drop {value::String} |
|
||||||
NoTotal |
|
NoTotal |
|
||||||
SubTotal |
|
SubTotal |
|
||||||
WeeklyOpt |
|
WeeklyOpt |
|
||||||
@ -212,13 +214,20 @@ intervalFromOpts opts =
|
|||||||
periodopts = reverse $ optValuesForConstructor Period opts
|
periodopts = reverse $ optValuesForConstructor Period opts
|
||||||
intervalopts = reverse $ filter (`elem` [WeeklyOpt,MonthlyOpt,QuarterlyOpt,YearlyOpt]) 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 :: [Opt] -> Maybe Int
|
||||||
depthFromOpts opts = listtomaybeint $ optValuesForConstructor Depth opts
|
depthFromOpts opts = listtomaybeint $ optValuesForConstructor Depth opts
|
||||||
where
|
where
|
||||||
listtomaybeint [] = Nothing
|
listtomaybeint [] = Nothing
|
||||||
listtomaybeint vs = Just $ read $ last vs
|
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.
|
-- | Get the value of the (last) display option, if any.
|
||||||
displayExprFromOpts :: [Opt] -> Maybe String
|
displayExprFromOpts :: [Opt] -> Maybe String
|
||||||
displayExprFromOpts opts = listtomaybe $ optValuesForConstructor Display opts
|
displayExprFromOpts opts = listtomaybe $ optValuesForConstructor Display opts
|
||||||
|
|||||||
@ -282,13 +282,16 @@ Examples:
|
|||||||
$ hledger balance food -p 'last month'
|
$ hledger balance food -p 'last month'
|
||||||
|
|
||||||
A final total is displayed, use `--no-total` to suppress this. Also, the
|
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
|
$ 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
|
With `--flat`, a non-hierarchical list of full account names is displayed
|
||||||
instead. This mode shows just the accounts actually contributing to the
|
instead. This mode shows just the accounts actually contributing to the
|
||||||
balance, making the arithmetic a little more obvious to non-hledger users.
|
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
|
##### chart
|
||||||
|
|
||||||
|
|||||||
@ -32,6 +32,9 @@ accountNameLevel :: AccountName -> Int
|
|||||||
accountNameLevel "" = 0
|
accountNameLevel "" = 0
|
||||||
accountNameLevel a = length (filter (==acctsepchar) a) + 1
|
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"]
|
-- | ["a:b:c","d:e"] -> ["a","a:b","a:b:c","d","d:e"]
|
||||||
expandAccountNames :: [AccountName] -> [AccountName]
|
expandAccountNames :: [AccountName] -> [AccountName]
|
||||||
expandAccountNames as = nub $ concatMap expand as
|
expandAccountNames as = nub $ concatMap expand as
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user