summaryrefslogtreecommitdiff
path: root/src/journal.cc
diff options
context:
space:
mode:
authorJohn Wiegley <johnw@fpcomplete.com>2013-01-11 07:08:51 -0600
committerJohn Wiegley <johnw@fpcomplete.com>2013-01-11 07:08:51 -0600
commitaba0a5ed2dc2dc91f61be32f4c12a5cf6bffd754 (patch)
treecbb354c7c84669d07145a1da05ced0bdbae84c09 /src/journal.cc
parent82ac7ef313ae8a8d9251706d66345efed6bf90ab (diff)
downloadfork-ledger-aba0a5ed2dc2dc91f61be32f4c12a5cf6bffd754.tar.gz
fork-ledger-aba0a5ed2dc2dc91f61be32f4c12a5cf6bffd754.tar.bz2
fork-ledger-aba0a5ed2dc2dc91f61be32f4c12a5cf6bffd754.zip
Improvement to account alias expansion
Aliases are now expanded not only if they occur by themselves, but also if they occur as the beginning of a multi-part account. Given <alias Food=Expenses:Food> the account <Food:Tomatos> should now be expanded to <Expenses:Food:Tomatos>.
Diffstat (limited to 'src/journal.cc')
-rw-r--r--src/journal.cc13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/journal.cc b/src/journal.cc
index e6c09125..f45b7527 100644
--- a/src/journal.cc
+++ b/src/journal.cc
@@ -127,8 +127,19 @@ account_t * journal_t::register_account(const string& name, post_t * post,
// object.
if (account_aliases.size() > 0) {
accounts_map::const_iterator i = account_aliases.find(name);
- if (i != account_aliases.end())
+ if (i != account_aliases.end()) {
result = (*i).second;
+ } else {
+ // only check the very first account for alias expansion, in case
+ // that can be expanded successfully
+ size_t colon = name.find(':');
+ if(colon != string::npos) {
+ accounts_map::const_iterator i = account_aliases.find(name.substr(0, colon));
+ if (i != account_aliases.end()) {
+ result = find_account((*i).second->fullname() + name.substr(colon));
+ }
+ }
+ }
}
// Create the account object and associate it with the journal; this