# alias-related tests # simple aliases # 1. simple alias directive < alias checking = assets:bank:checking 1/1 (checking:a) 1 $ hledger -f- accounts assets:bank:checking:a # 2. simple alias matches whole account name components only < alias a:b = A:B 1/1 (a:b:c) 1 ; should match this 1/1 (a:bb:d) 1 ; should not match this $ hledger -f- accounts A:B:c a:bb:d # 3. a simple alias matching the whole account name works < alias a:b = A:B 1/1 (a:b) 1 $ hledger -f- accounts A:B # regular expression aliases # 4. regex alias directive < alias /^(.+):bank:([^:]+):?(.*)/ = \1:\2 \3 1/1 (assets:bank:B:checking:a) 1 $ hledger -f- accounts assets:B checking:a # 5. regex alias pattern is a case-insensitive regular expression # matching anywhere in the account name. All matching aliases are # applied to an account name in turn, most recently seen first. The # replacement can replace multiple matches within the account name. # The replacement pattern supports numeric backreferences. # < 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 $ hledger -f- print 2011/01/01 b b 1 b b 2 c 2011/01/01 b 1 b 2 c >=0 # CLI # 6. --alias command-line options are applied in the order written. # Spaces are allowed if quoted. # < 2011/01/01 a a 1 A a 2 c $ hledger -f- print --alias '/A (.)/=a' --alias /a/=b 2011/01/01 b 1 b 2 c >=0 # 7. alias options are applied after alias directives. # < alias /^a/=B alias /^a/=E alias E=F 2011/01/01 [a:x] 1 [x:a:x] $ hledger -f- print --alias /a/=A --alias /B/=C --alias /B/=D --alias /C/=D 2011/01/01 [E:x] 1 [x:A:x] >=0 # 8. alias options < 01/01 Opening balances (bank) 100 (credit-card) -10 01/02 expenses 5 cc 01/03 expenses 5 b 01/04 Credit card charge cc = 0 b 01/05 expenses 5 b = 75 $ hledger -f- balance --alias=cc=credit-card --alias=b=bank 75 bank 15 expenses -------------------- 90 # 9. query will search both origin and substitution in alias < alias a = b 2017/1/1 a 1 b -1 $ hledger -f- reg '^a$' '^b$' 2017/01/01 b 1 1 b -1 0 # recursive aliases https://github.com/simonmichael/hledger/issues/1055 # 10. Recursive command line simple aliases. < 2000/01/01 (one) 1 $ hledger -f- --alias "one=two" --alias "two=three" print 2000/01/01 (three) 1 >=0 # 11. Recursive simple alias directives. Note the reverse order, # alias directives are applied most recent first (bottom up). < alias two = three alias one = two 2000/01/01 (one) 1 $ hledger -f- print 2000/01/01 (three) 1 >=0 # 12. Only one of these is applied. < alias one = three alias one = two 2000/01/01 (one) 1 $ hledger -f- print 2000/01/01 (two) 1 >=0 # 13. Recursive command line regexp aliases. < 2000/01/01 (one) 1 $ hledger -f- --alias "/one/=two" --alias "/two/=three" print 2000/01/01 (three) 1 >=0 # 14. Recursive regexp alias directives. # Alias directives are applied most recent first (bottom up). < alias /two/ = three alias /one/ = two 2000/01/01 (one) 1 $ hledger -f- print 2000/01/01 (three) 1 >=0 # 15. Only one of these is applied. < alias /one/ = three alias /one/ = two 2000/01/01 (one) 1 $ hledger -f- print 2000/01/01 (two) 1 >=0