The option --permissive now quiets balance assertions
This commit is contained in:
parent
a98ced34dd
commit
634aa589cd
4 changed files with 20 additions and 14 deletions
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -144,6 +144,7 @@ public:
|
|||
|
||||
enum checking_style_t {
|
||||
CHECK_PERMISSIVE,
|
||||
CHECK_NORMAL,
|
||||
CHECK_WARNING,
|
||||
CHECK_ERROR
|
||||
} checking_style;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue