fix simple aliases that match the whole account name

This commit is contained in:
Simon Michael 2015-05-28 10:39:12 -07:00
parent c138852dab
commit 46bbc9e0aa
3 changed files with 21 additions and 3 deletions

View File

@ -59,6 +59,7 @@ parentAccountNames a = parentAccountNames' $ parentAccountName a
parentAccountNames' "" = []
parentAccountNames' a = a : parentAccountNames' (parentAccountName a)
-- | Is the first account a parent or other ancestor of (and not the same as) the second ?
isAccountNamePrefixOf :: AccountName -> AccountName -> Bool
isAccountNamePrefixOf = isPrefixOf . (++ [acctsepchar])

View File

@ -226,7 +226,7 @@ accountNameApplyAliases aliases a = accountNameWithPostingType atype aname'
where
(aname,atype) = (accountNameWithoutPostingType a, accountNamePostingType a)
aname' = foldl
(\acct alias -> dbg6 "got" $ aliasReplace (dbg6 "alias" alias) acct)
(\acct alias -> dbg6 "result" $ aliasReplace (dbg6 "alias" alias) (dbg6 "account" acct))
aname
aliases
@ -235,8 +235,9 @@ accountNameApplyAliases aliases a = accountNameWithPostingType atype aname'
-- aliasMatches (RegexAlias re _) a = regexMatchesCI re a
aliasReplace :: AccountAlias -> AccountName -> AccountName
aliasReplace (BasicAlias old new) a | old `isAccountNamePrefixOf` a = new ++ drop (length old) a
| otherwise = a
aliasReplace (BasicAlias old new) a
| old `isAccountNamePrefixOf` a || old == a = new ++ drop (length old) a
| otherwise = a
aliasReplace (RegexAlias re repl) a = regexReplaceCI re repl a

View File

@ -1,5 +1,7 @@
# alias-related tests
# simple aliases
# simple alias directive
hledgerdev -f- accounts
<<<
@ -23,6 +25,18 @@ A:B:c
a:bb:d
>>>=0
# a simple alias matching the whole account name works
hledgerdev -f- accounts
<<<
alias a:b = A:B
1/1
(a:b) 1
>>>
A:B
>>>=0
# regular expression aliases
# regex alias directive
hledgerdev -f- accounts
<<<
@ -68,6 +82,8 @@ alias /A (.)/=\1
>>>=0
# CLI
# --alias command-line options are applied in the order written.
# Spaces are allowed if quoted.
#