lib: journal: let alias/apply account affect account directives (#825)

This commit is contained in:
Simon Michael 2018-06-27 11:26:08 +01:00
parent 422f1084c9
commit 6924e8390c
4 changed files with 30 additions and 2 deletions

View File

@ -459,7 +459,9 @@ secondarydatep primaryDate = char '=' *> datep' (Just primaryYear)
--- ** account names --- ** account names
-- | Parse an account name, then apply any parent account prefix and/or account aliases currently in effect. -- | Parse an account name (plus one following space if present),
-- then apply any parent account prefix and/or account aliases currently in effect,
-- in that order. (Ie first add the parent account prefix, then rewrite with aliases).
modifiedaccountnamep :: JournalParser m AccountName modifiedaccountnamep :: JournalParser m AccountName
modifiedaccountnamep = do modifiedaccountnamep = do
parent <- getParentAccount parent <- getParentAccount

View File

@ -248,7 +248,7 @@ accountdirectivep :: JournalParser m ()
accountdirectivep = do accountdirectivep = do
string "account" string "account"
lift (skipSome spacenonewline) lift (skipSome spacenonewline)
acct <- lift accountnamep -- eats single spaces acct <- modifiedaccountnamep -- account directives can be modified by alias/apply account
macode' :: Maybe String <- (optional $ lift $ skipSome spacenonewline >> some digitChar) macode' :: Maybe String <- (optional $ lift $ skipSome spacenonewline >> some digitChar)
let macode :: Maybe AccountCode = read <$> macode' let macode :: Maybe AccountCode = read <$> macode'
newline newline

View File

@ -928,6 +928,9 @@ You can clear (forget) all currently defined aliases with the `end aliases` dire
end aliases end aliases
``` ```
Account aliases also affect [account directives](#declaring-accounts).
They do not affect account names being entered via hledger add or hledger-web.
### 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
@ -963,6 +966,10 @@ include personal.journal
Prior to hledger 1.0, legacy `account` and `end` spellings were also supported. Prior to hledger 1.0, legacy `account` and `end` spellings were also supported.
A default parent account also affects [account directives](#declaring-accounts).
It does not affect account names being entered via hledger add or hledger-web.
If account aliases are present, they are applied after the default parent account.
## Periodic transactions ## Periodic transactions
Periodic transaction rules describe transactions that recur. Periodic transaction rules describe transactions that recur.

View File

@ -0,0 +1,19 @@
# account names
# 1. account directives are affected by aliases and apply account.
<
apply account c
alias c:a=b
account a
$ hledger -f - accounts
b
# TODO
# a trailing : should give a clear error
# 2009/1/1
# a: 1
# $ hledger -f - print
# >2 /accountname seems ill-formed: a:/
# >= 1