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/textual.cc | |
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/textual.cc')
-rw-r--r-- | src/textual.cc | 15 |
1 files changed, 9 insertions, 6 deletions
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(); |