fix: Allow accountNameInferType to recognise Conversion accounts.

This commit is contained in:
Stephen Morgan 2022-02-01 16:07:05 +11:00 committed by Simon Michael
parent e17cd1540d
commit 36fe6bbcff

View File

@ -25,6 +25,7 @@ module Hledger.Data.AccountName (
,cashAccountRegex
,liabilityAccountRegex
,equityAccountRegex
,conversionAccountRegex
,revenueAccountRegex
,expenseAccountRegex
,acctsep
@ -89,12 +90,13 @@ accountSummarisedName a
cs = accountNameComponents a
a' = accountLeafName a
-- | Regular expressions matching common english top-level account names,
-- | Regular expressions matching common English top-level account names,
-- used as a fallback when account types are not declared.
assetAccountRegex = toRegexCI' "^assets?(:|$)"
cashAccountRegex = toRegexCI' "(investment|receivable|:A/R|:fixed)"
liabilityAccountRegex = toRegexCI' "^(debts?|liabilit(y|ies))(:|$)"
equityAccountRegex = toRegexCI' "^equity(:|$)"
conversionAccountRegex = toRegexCI' "^equity:(trad(e|ing)|conversion)s?(:|$)"
revenueAccountRegex = toRegexCI' "^(income|revenue)s?(:|$)"
expenseAccountRegex = toRegexCI' "^expenses?(:|$)"
@ -105,6 +107,7 @@ accountNameInferType a
| a == "asset" || a == "assets" = Just Asset
| regexMatchText assetAccountRegex a = Just $ if regexMatchText cashAccountRegex a then Asset else Cash
| regexMatchText liabilityAccountRegex a = Just Liability
| regexMatchText conversionAccountRegex a = Just Conversion
| regexMatchText equityAccountRegex a = Just Equity
| regexMatchText revenueAccountRegex a = Just Revenue
| regexMatchText expenseAccountRegex a = Just Expense
@ -289,6 +292,7 @@ tests_AccountName = testGroup "AccountName" [
accountNameInferType "assets:A/R" @?= Just Asset
accountNameInferType "liabilities" @?= Just Liability
accountNameInferType "equity" @?= Just Equity
accountNameInferType "equity:conversion" @?= Just Conversion
accountNameInferType "expenses" @?= Just Expense
accountNameInferType "revenues" @?= Just Revenue
accountNameInferType "revenue" @?= Just Revenue