hledger/tests/misc/aliases.test
Simon Michael e892fdc6d5 parsing: aliases now match by regular expression
alias match patterns (the part left of the =) are now case-insensitive
regular expressions matching anywhere in the account name. The
replacement string (the part right of the =) can replace multiple
matches within the account name. The replacement string does not yet
support any of the usual syntax like backreferences.
2014-10-24 15:05:10 -07:00

76 lines
1.2 KiB
Plaintext

# alias-related tests
# 1. alias directive. The pattern is a case-insensitive regular
# expression matching anywhere in the account name. Only the most
# recently declared matching alias is applied to an account name. The
# replacement can replace multiple matches within the account name.
# The replacement pattern does not yet support match references.
#
hledgerdev -f- print
<<<
alias a=b
2011/01/01
A a 1
a a 2
c
alias A (.)=\1
2011/01/01
A a 1
a a 2
c
>>>
2011/01/01
b b 1
b b 2
c -3
2011/01/01
\1 1
\1 2
c -3
>>>=0
# 2. command-line --alias option. Only the first matching alias is
# applied per account name. Spaces are allowed if quoted.
#
hledgerdev -f- print --alias 'A (.)=a' --alias a=b
<<<
2011/01/01
a a 1
A a 2
c
>>>
2011/01/01
a 1
a 2
c -3
>>>=0
# 3. Alias options run after alias directives. At most one of each is
# applied.
#
hledgerdev -f- print --alias a=A --alias B=C --alias B=D --alias C=D
<<<
alias ^a=B
alias ^a=E
alias E=F
2011/01/01
[a:x] 1
[x:a:x]
>>>
2011/01/01
[E:x] 1
[x:A:x] -1
>>>2
>>>=0