summaryrefslogtreecommitdiff
path: root/src/textual.cc
diff options
context:
space:
mode:
authorJohn Wiegley <johnw@newartisans.com>2014-04-13 23:25:02 -0500
committerJohn Wiegley <johnw@newartisans.com>2014-04-13 23:26:14 -0500
commit634aa589cd97d088524ae2fb68ec6120d5e4a873 (patch)
tree56cfb579d96483ac6b8fccb74d12b1da7072c56c /src/textual.cc
parenta98ced34dd582836b93b84e526bd93b374db519c (diff)
downloadfork-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.cc15
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();