fix: Allow accountNameInferType to recognise Conversion accounts.
This commit is contained in:
parent
e17cd1540d
commit
36fe6bbcff
@ -25,6 +25,7 @@ module Hledger.Data.AccountName (
|
|||||||
,cashAccountRegex
|
,cashAccountRegex
|
||||||
,liabilityAccountRegex
|
,liabilityAccountRegex
|
||||||
,equityAccountRegex
|
,equityAccountRegex
|
||||||
|
,conversionAccountRegex
|
||||||
,revenueAccountRegex
|
,revenueAccountRegex
|
||||||
,expenseAccountRegex
|
,expenseAccountRegex
|
||||||
,acctsep
|
,acctsep
|
||||||
@ -89,26 +90,28 @@ accountSummarisedName a
|
|||||||
cs = accountNameComponents a
|
cs = accountNameComponents a
|
||||||
a' = accountLeafName 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.
|
-- used as a fallback when account types are not declared.
|
||||||
assetAccountRegex = toRegexCI' "^assets?(:|$)"
|
assetAccountRegex = toRegexCI' "^assets?(:|$)"
|
||||||
cashAccountRegex = toRegexCI' "(investment|receivable|:A/R|:fixed)"
|
cashAccountRegex = toRegexCI' "(investment|receivable|:A/R|:fixed)"
|
||||||
liabilityAccountRegex = toRegexCI' "^(debts?|liabilit(y|ies))(:|$)"
|
liabilityAccountRegex = toRegexCI' "^(debts?|liabilit(y|ies))(:|$)"
|
||||||
equityAccountRegex = toRegexCI' "^equity(:|$)"
|
equityAccountRegex = toRegexCI' "^equity(:|$)"
|
||||||
revenueAccountRegex = toRegexCI' "^(income|revenue)s?(:|$)"
|
conversionAccountRegex = toRegexCI' "^equity:(trad(e|ing)|conversion)s?(:|$)"
|
||||||
expenseAccountRegex = toRegexCI' "^expenses?(:|$)"
|
revenueAccountRegex = toRegexCI' "^(income|revenue)s?(:|$)"
|
||||||
|
expenseAccountRegex = toRegexCI' "^expenses?(:|$)"
|
||||||
|
|
||||||
-- | Try to guess an account's type from its name,
|
-- | Try to guess an account's type from its name,
|
||||||
-- matching common English top-level account names.
|
-- matching common English top-level account names.
|
||||||
accountNameInferType :: AccountName -> Maybe AccountType
|
accountNameInferType :: AccountName -> Maybe AccountType
|
||||||
accountNameInferType a
|
accountNameInferType a
|
||||||
| a == "asset" || a == "assets" = Just Asset
|
| a == "asset" || a == "assets" = Just Asset
|
||||||
| regexMatchText assetAccountRegex a = Just $ if regexMatchText cashAccountRegex a then Asset else Cash
|
| regexMatchText assetAccountRegex a = Just $ if regexMatchText cashAccountRegex a then Asset else Cash
|
||||||
| regexMatchText liabilityAccountRegex a = Just Liability
|
| regexMatchText liabilityAccountRegex a = Just Liability
|
||||||
| regexMatchText equityAccountRegex a = Just Equity
|
| regexMatchText conversionAccountRegex a = Just Conversion
|
||||||
| regexMatchText revenueAccountRegex a = Just Revenue
|
| regexMatchText equityAccountRegex a = Just Equity
|
||||||
| regexMatchText expenseAccountRegex a = Just Expense
|
| regexMatchText revenueAccountRegex a = Just Revenue
|
||||||
| otherwise = Nothing
|
| regexMatchText expenseAccountRegex a = Just Expense
|
||||||
|
| otherwise = Nothing
|
||||||
|
|
||||||
accountNameLevel :: AccountName -> Int
|
accountNameLevel :: AccountName -> Int
|
||||||
accountNameLevel "" = 0
|
accountNameLevel "" = 0
|
||||||
@ -289,6 +292,7 @@ tests_AccountName = testGroup "AccountName" [
|
|||||||
accountNameInferType "assets:A/R" @?= Just Asset
|
accountNameInferType "assets:A/R" @?= Just Asset
|
||||||
accountNameInferType "liabilities" @?= Just Liability
|
accountNameInferType "liabilities" @?= Just Liability
|
||||||
accountNameInferType "equity" @?= Just Equity
|
accountNameInferType "equity" @?= Just Equity
|
||||||
|
accountNameInferType "equity:conversion" @?= Just Conversion
|
||||||
accountNameInferType "expenses" @?= Just Expense
|
accountNameInferType "expenses" @?= Just Expense
|
||||||
accountNameInferType "revenues" @?= Just Revenue
|
accountNameInferType "revenues" @?= Just Revenue
|
||||||
accountNameInferType "revenue" @?= Just Revenue
|
accountNameInferType "revenue" @?= Just Revenue
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user