journal: tests/docs for aliases corrupting account names (#1788)
This commit is contained in:
parent
e9dd77e82b
commit
9c173bc18b
@ -58,6 +58,7 @@ There are some situations where print's output can become unparseable:
|
|||||||
|
|
||||||
- [Valuation](#valuation) affects posting amounts but not [balance assertion](#balance-assertions) or [balance assignment](#balance-assignments) amounts, potentially causing those to [fail](https://github.com/simonmichael/hledger/issues/1429).
|
- [Valuation](#valuation) affects posting amounts but not [balance assertion](#balance-assertions) or [balance assignment](#balance-assignments) amounts, potentially causing those to [fail](https://github.com/simonmichael/hledger/issues/1429).
|
||||||
- [Auto postings](#auto-postings) can generate postings with [too many missing amounts](https://github.com/simonmichael/hledger/issues/1276).
|
- [Auto postings](#auto-postings) can generate postings with [too many missing amounts](https://github.com/simonmichael/hledger/issues/1276).
|
||||||
|
- [Account aliases can generate invalid account names](#account-aliases-can-generate-invalid-account-names).
|
||||||
|
|
||||||
Normally, the journal entry's explicit or implicit amount style is preserved.
|
Normally, the journal entry's explicit or implicit amount style is preserved.
|
||||||
For example, when an amount is omitted in the journal, it will not appear in the output.
|
For example, when an amount is omitted in the journal, it will not appear in the output.
|
||||||
|
|||||||
@ -3153,12 +3153,17 @@ This can be useful for:
|
|||||||
|
|
||||||
- expanding shorthand account names to their full form, allowing easier data entry and a less verbose journal
|
- expanding shorthand account names to their full form, allowing easier data entry and a less verbose journal
|
||||||
- adapting old journals to your current chart of accounts
|
- adapting old journals to your current chart of accounts
|
||||||
- experimenting with new account organisations, like a new hierarchy or combining two accounts into one
|
- experimenting with new account organisations, like a new hierarchy
|
||||||
|
- combining two accounts into one, eg to see their sum or difference on one line
|
||||||
- customising reports
|
- customising reports
|
||||||
|
|
||||||
Account aliases also rewrite account names in [account directives](#declaring-accounts).
|
Account aliases also rewrite account names in [account directives](#declaring-accounts).
|
||||||
They do not affect account names being entered via hledger add or hledger-web.
|
They do not affect account names being entered via hledger add or hledger-web.
|
||||||
|
|
||||||
|
Account aliases are very powerful.
|
||||||
|
They are generally easy to use correctly, but you can also generate
|
||||||
|
invalid account names with them; more on this below.
|
||||||
|
|
||||||
See also [Rewrite account names](rewrite-account-names.html).
|
See also [Rewrite account names](rewrite-account-names.html).
|
||||||
|
|
||||||
### Basic aliases
|
### Basic aliases
|
||||||
@ -3276,6 +3281,39 @@ with this directive:
|
|||||||
end aliases
|
end aliases
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Aliases can generate invalid account names
|
||||||
|
|
||||||
|
Be aware that account aliases can produce malformed account names,
|
||||||
|
which could cause confusing reports or and invalid [`print`](#print) output.
|
||||||
|
Two examples: you can erase an account name:
|
||||||
|
|
||||||
|
```journal
|
||||||
|
2021-01-01
|
||||||
|
a:aa 1
|
||||||
|
b
|
||||||
|
```
|
||||||
|
```shell
|
||||||
|
$ hledger -f- print --alias '/a:.*/='
|
||||||
|
2021-01-01
|
||||||
|
1
|
||||||
|
b
|
||||||
|
```
|
||||||
|
|
||||||
|
or insert an illegal double space, causing part of the account name
|
||||||
|
to be treated as part of the amount if reparsed:
|
||||||
|
|
||||||
|
```journal
|
||||||
|
2021-01-01
|
||||||
|
old 1
|
||||||
|
other
|
||||||
|
```
|
||||||
|
```shell
|
||||||
|
$ hledger -f- --alias old="new USD" print | hledger -f- print
|
||||||
|
2021-01-01
|
||||||
|
new USD 1
|
||||||
|
other
|
||||||
|
```
|
||||||
|
|
||||||
## Default parent account
|
## Default parent account
|
||||||
|
|
||||||
You can specify a parent account which will be prepended to all accounts
|
You can specify a parent account which will be prepended to all accounts
|
||||||
|
|||||||
@ -225,3 +225,30 @@ $ hledger -f- print
|
|||||||
|
|
||||||
>=0
|
>=0
|
||||||
|
|
||||||
|
# Aliases can produce malformed account names and invalid print output (#1788).
|
||||||
|
# 16. For example, you can erase an account name:
|
||||||
|
<
|
||||||
|
alias /a:.*/=
|
||||||
|
2021-01-01
|
||||||
|
a:aa 1
|
||||||
|
b
|
||||||
|
$ hledger -f- print
|
||||||
|
2021-01-01
|
||||||
|
1
|
||||||
|
b
|
||||||
|
|
||||||
|
>=0
|
||||||
|
|
||||||
|
# 17. Another example: you can insert an illegal double space,
|
||||||
|
# with the second part considered part of the amount if reparsed:
|
||||||
|
<
|
||||||
|
2021-01-01
|
||||||
|
old 1
|
||||||
|
other
|
||||||
|
|
||||||
|
$ hledger -f- --alias old="new USD" print | hledger -f- print
|
||||||
|
2021-01-01
|
||||||
|
new USD 1
|
||||||
|
other
|
||||||
|
|
||||||
|
>=0
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user