diff options
author | John Wiegley <johnw@newartisans.com> | 2014-04-13 23:25:02 -0500 |
---|---|---|
committer | John Wiegley <johnw@newartisans.com> | 2014-04-13 23:26:14 -0500 |
commit | 634aa589cd97d088524ae2fb68ec6120d5e4a873 (patch) | |
tree | 56cfb579d96483ac6b8fccb74d12b1da7072c56c /src | |
parent | a98ced34dd582836b93b84e526bd93b374db519c (diff) | |
download | fork-ledger-634aa589cd97d088524ae2fb68ec6120d5e4a873.tar.gz fork-ledger-634aa589cd97d088524ae2fb68ec6120d5e4a873.tar.bz2 fork-ledger-634aa589cd97d088524ae2fb68ec6120d5e4a873.zip |
The option --permissive now quiets balance assertions
Diffstat (limited to 'src')
-rw-r--r-- | src/journal.cc | 2 | ||||
-rw-r--r-- | src/journal.h | 1 | ||||
-rw-r--r-- | src/session.cc | 16 | ||||
-rw-r--r-- | src/textual.cc | 15 |
4 files changed, 20 insertions, 14 deletions
diff --git a/src/journal.cc b/src/journal.cc index 160abe06..ef35722c 100644 --- a/src/journal.cc +++ b/src/journal.cc @@ -95,7 +95,7 @@ void journal_t::initialize() force_checking = false; check_payees = false; day_break = false; - checking_style = CHECK_PERMISSIVE; + checking_style = CHECK_NORMAL; recursive_aliases = false; } diff --git a/src/journal.h b/src/journal.h index e4763482..ad7b4b48 100644 --- a/src/journal.h +++ b/src/journal.h @@ -144,6 +144,7 @@ public: enum checking_style_t { CHECK_PERMISSIVE, + CHECK_NORMAL, CHECK_WARNING, CHECK_ERROR } checking_style; diff --git a/src/session.cc b/src/session.cc index b386607a..ec57eab3 100644 --- a/src/session.cc +++ b/src/session.cc @@ -106,10 +106,6 @@ std::size_t session_t::read_data(const string& master_account) } } - if (HANDLED(explicit)) - journal->force_checking = true; - if (HANDLED(check_payees)) - journal->check_payees = true; if (HANDLED(day_break)) journal->day_break = true; @@ -117,15 +113,21 @@ std::size_t session_t::read_data(const string& master_account) journal->recursive_aliases = true; if (HANDLED(no_aliases)) journal->no_aliases = true; - + + if (HANDLED(explicit)) + journal->force_checking = true; + if (HANDLED(check_payees)) + journal->check_payees = true; + if (HANDLED(permissive)) journal->checking_style = journal_t::CHECK_PERMISSIVE; else if (HANDLED(pedantic)) journal->checking_style = journal_t::CHECK_ERROR; else if (HANDLED(strict)) journal->checking_style = journal_t::CHECK_WARNING; - else if (HANDLED(value_expr_)) - journal->value_expr = HANDLER(value_expr_).str(); + + if (HANDLED(value_expr_)) + journal->value_expr = HANDLER(value_expr_).str(); #if HAVE_BOOST_SERIALIZATION optional<archive_t> cache; diff --git a/src/textual.cc b/src/textual.cc index 627a1835..fa84d6de 100644 --- a/src/textual.cc +++ b/src/textual.cc @@ -77,16 +77,18 @@ namespace { std::istream& in; instance_t * parent; std::list<application_t> apply_stack; + bool no_assertions; #if defined(TIMELOG_SUPPORT) time_log_t timelog; #endif instance_t(parse_context_stack_t& _context_stack, parse_context_t& _context, - instance_t * _parent = NULL) + instance_t * _parent = NULL, + const bool _no_assertions = false) : context_stack(_context_stack), context(_context), in(*context.stream.get()), parent(_parent), - timelog(context) {} + no_assertions(_no_assertions), timelog(context) {} virtual string description() { return _("textual parser"); @@ -779,8 +781,8 @@ void instance_t::include_directive(char * line) context_stack.get_current().master = master; context_stack.get_current().scope = scope; try { - instance_t instance(context_stack, - context_stack.get_current(), this); + instance_t instance(context_stack, context_stack.get_current(), + this, no_assertions); instance.apply_stack.push_front(application_t("account", master)); instance.parse(); } @@ -1625,7 +1627,7 @@ post_t * instance_t::parse_post(char * line, if (! diff.is_zero()) { if (! post->amount.is_null()) { diff -= post->amount; - if (! diff.is_zero()) + if (! no_assertions && ! diff.is_zero()) throw_(parse_error, _f("Balance assertion off by %1%") % diff); } else { post->amount = diff; @@ -1909,7 +1911,8 @@ std::size_t journal_t::read_textual(parse_context_stack_t& context_stack) { TRACE_START(parsing_total, 1, "Total time spent parsing text:"); { - instance_t instance(context_stack, context_stack.get_current()); + instance_t instance(context_stack, context_stack.get_current(), NULL, + checking_style == journal_t::CHECK_PERMISSIVE); instance.apply_stack.push_front (application_t("account", context_stack.get_current().master)); instance.parse(); |