Added a --forecast-years option

This sets how many years of forecasting Ledger will do before it
terminates the attempt.
This commit is contained in:
John Wiegley 2009-10-31 03:07:15 -04:00
parent 451b0e9b76
commit b0f12c600c
5 changed files with 20 additions and 8 deletions

View file

@ -209,7 +209,11 @@ post_handler_ptr chain_post_handlers(report_t& report,
= new forecast_posts(handler,
item_predicate(report.HANDLER(forecast_while_).str(),
report.what_to_keep()),
report);
report,
report.HANDLED(forecast_years_) ?
static_cast<std::size_t>
(report.HANDLER(forecast_years_).value.to_long()) :
5UL);
forecast_handler->add_period_xacts(report.session.journal->period_xacts);
handler.reset(forecast_handler);

View file

@ -871,9 +871,11 @@ void forecast_posts::flush()
date_t next = *(*least).first.next;
assert(next > begin);
if ((next - last).days() > 365 * 5) {
if (static_cast<std::size_t>((next - last).days()) >
static_cast<std::size_t>(365U) * forecast_years) {
DEBUG("filters.forecast",
"Forecast transaction exceeds 5 years beyond today");
"Forecast transaction exceeds " << forecast_years
<< " years beyond today");
pending_posts.erase(least);
continue;
}

View file

@ -764,16 +764,19 @@ public:
*/
class forecast_posts : public generate_posts
{
item_predicate pred;
scope_t& context;
item_predicate pred;
scope_t& context;
const std::size_t forecast_years;
public:
forecast_posts(post_handler_ptr handler,
const item_predicate& predicate,
scope_t& _context)
: generate_posts(handler), pred(predicate), context(_context) {
scope_t& _context,
const std::size_t _forecast_years)
: generate_posts(handler), pred(predicate), context(_context),
forecast_years(_forecast_years) {
TRACE_CTOR(forecast_posts,
"post_handler_ptr, const item_predicate&, scope_t&");
"post_handler_ptr, item_predicate, scope_t&, std::size_t");
}
virtual ~forecast_posts() throw() {
TRACE_DTOR(forecast_posts);

View file

@ -559,6 +559,7 @@ option_t<report_t> * report_t::lookup_option(const char * p)
case 'f':
OPT(flat);
else OPT_ALT(forecast_while_, forecast_);
else OPT(forecast_years_);
else OPT(format_);
else OPT(force_color);
else OPT(force_pager);

View file

@ -240,6 +240,7 @@ public:
HANDLER(force_color).report(out);
HANDLER(force_pager).report(out);
HANDLER(forecast_while_).report(out);
HANDLER(forecast_years_).report(out);
HANDLER(format_).report(out);
HANDLER(gain).report(out);
HANDLER(head_).report(out);
@ -544,6 +545,7 @@ public:
OPTION(report_t, force_color);
OPTION(report_t, force_pager);
OPTION(report_t, forecast_while_);
OPTION(report_t, forecast_years_);
OPTION(report_t, format_); // -F
OPTION_(report_t, gain, DO() { // -G