summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPeter Feigl <craven@gmx.net>2014-02-26 09:29:31 +0100
committerPeter Feigl <craven@gmx.net>2014-02-26 09:29:31 +0100
commit75b0a5d8ff22abeac8c4f502154159f998ffbe99 (patch)
tree0e8ec4c444700fd996eefead32455ec7086bff08 /src
parent230fa31ba3087884c0701e9a4fe1c44a184e6f27 (diff)
downloadfork-ledger-75b0a5d8ff22abeac8c4f502154159f998ffbe99.tar.gz
fork-ledger-75b0a5d8ff22abeac8c4f502154159f998ffbe99.tar.bz2
fork-ledger-75b0a5d8ff22abeac8c4f502154159f998ffbe99.zip
Adding option --recursive-aliases, adding documentation to man-page and manual
Diffstat (limited to 'src')
-rw-r--r--src/journal.cc5
-rw-r--r--src/journal.h1
-rw-r--r--src/session.cc6
-rw-r--r--src/session.h2
4 files changed, 12 insertions, 2 deletions
diff --git a/src/journal.cc b/src/journal.cc
index 8406da91..007acd7b 100644
--- a/src/journal.cc
+++ b/src/journal.cc
@@ -96,6 +96,7 @@ void journal_t::initialize()
check_payees = false;
day_break = false;
checking_style = CHECK_PERMISSIVE;
+ recursive_aliases = false;
}
void journal_t::add_account(account_t * acct)
@@ -175,7 +176,7 @@ account_t * journal_t::expand_aliases(string name) {
bool keep_expanding = true;
std::list<string> already_seen;
// loop until no expansion can be found
- while(keep_expanding) {
+ do {
if (account_aliases.size() > 0) {
accounts_map::const_iterator i = account_aliases.find(name);
if (i != account_aliases.end()) {
@@ -214,7 +215,7 @@ account_t * journal_t::expand_aliases(string name) {
} else {
keep_expanding = false;
}
- }
+ } while(keep_expanding && recursive_aliases);
return result;
}
diff --git a/src/journal.h b/src/journal.h
index 3c363962..270a2912 100644
--- a/src/journal.h
+++ b/src/journal.h
@@ -131,6 +131,7 @@ public:
bool force_checking;
bool check_payees;
bool day_break;
+ bool recursive_aliases;
payee_mappings_t payee_mappings;
account_mappings_t account_mappings;
accounts_map account_aliases;
diff --git a/src/session.cc b/src/session.cc
index dbd49a0e..99467a43 100644
--- a/src/session.cc
+++ b/src/session.cc
@@ -113,6 +113,9 @@ std::size_t session_t::read_data(const string& master_account)
if (HANDLED(day_break))
journal->day_break = true;
+ if (HANDLED(recursive_aliases))
+ journal->recursive_aliases = true;
+
if (HANDLED(permissive))
journal->checking_style = journal_t::CHECK_PERMISSIVE;
else if (HANDLED(pedantic))
@@ -350,6 +353,9 @@ option_t<session_t> * session_t::lookup_option(const char * p)
else OPT(pedantic);
else OPT(permissive);
break;
+ case 'r':
+ OPT(recursive_aliases);
+ break;
case 's':
OPT(strict);
break;
diff --git a/src/session.h b/src/session.h
index 3572b991..c2345362 100644
--- a/src/session.h
+++ b/src/session.h
@@ -109,6 +109,7 @@ public:
HANDLER(permissive).report(out);
HANDLER(price_db_).report(out);
HANDLER(price_exp_).report(out);
+ HANDLER(recursive_aliases).report(out);
HANDLER(strict).report(out);
HANDLER(value_expr_).report(out);
}
@@ -164,6 +165,7 @@ public:
OPTION(session_t, price_db_);
OPTION(session_t, strict);
OPTION(session_t, value_expr_);
+ OPTION(session_t, recursive_aliases);
};
/**