match full account name when (any) account pattern contains :, as ledger seems to
This commit is contained in:
		
							parent
							
								
									760befef89
								
							
						
					
					
						commit
						7a69efec70
					
				| @ -138,7 +138,7 @@ showBalanceReport opts args l = acctsstr ++ totalstr | ||||
|       -- select accounts for which we should show balances, based on the options | ||||
|       balancereportaccts :: Bool -> [String] -> Ledger -> [Account] | ||||
|       balancereportaccts False [] l = topAccounts l | ||||
|       balancereportaccts False pats l = accountsMatching (regexFor pats) l | ||||
|       balancereportaccts False pats l = accountsMatching pats l | ||||
|       balancereportaccts True pats l = addsubaccts l $ balancereportaccts False pats l | ||||
| 
 | ||||
|       -- add (in tree order) any missing subacccounts to a list of accounts | ||||
|  | ||||
| @ -68,9 +68,14 @@ accounts l = drop 1 $ flatten $ ledgerAccountTree 9999 l | ||||
| topAccounts :: Ledger -> [Account] | ||||
| topAccounts l = map root $ branches $ ledgerAccountTree 9999 l | ||||
| 
 | ||||
| -- | Accounts in ledger whose leafname matches the pattern, in tree order | ||||
| accountsMatching :: Regex -> Ledger -> [Account] | ||||
| accountsMatching pat l = filter (containsRegex pat . accountLeafName . aname) $ accounts l | ||||
| -- | Accounts in ledger whose name matches the pattern, in tree order. | ||||
| -- Like ledger (I think), if the pattern contains : we match the full | ||||
| -- name, otherwise just the leaf name. | ||||
| accountsMatching :: [String] -> Ledger -> [Account] | ||||
| accountsMatching pats l = filter (containsRegex (regexFor pats) . name) $ accounts l | ||||
|     where name = if any (elem ':') pats  | ||||
|                  then aname | ||||
|                  else accountLeafName . aname | ||||
| 
 | ||||
| -- | List a ledger account's immediate subaccounts | ||||
| subAccounts :: Ledger -> Account -> [Account] | ||||
|  | ||||
							
								
								
									
										10
									
								
								Tests.hs
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								Tests.hs
									
									
									
									
									
								
							| @ -181,6 +181,16 @@ balancecommandtests = | ||||
|      \                 $-1\n\ | ||||
|      \" --" | ||||
|      (showBalanceReport [] ["cash","saving"] l) | ||||
|  , | ||||
|   "balance report with multi-part account name" ~:  | ||||
|   do  | ||||
|     l <- ledgerfromfile "sample.ledger" | ||||
|     assertequal | ||||
|      "                  $1  expenses:food\n\ | ||||
|      \--------------------\n\ | ||||
|      \                  $1\n\ | ||||
|      \" --" | ||||
|      $ showBalanceReport [] ["expenses:food"] l | ||||
|  ] | ||||
| 
 | ||||
| -- | Assert a parsed thing equals some expected thing, or print a parse error. | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user