summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--report.cc35
-rw-r--r--report.h157
2 files changed, 75 insertions, 117 deletions
diff --git a/report.cc b/report.cc
index 6e065f57..92f20d4f 100644
--- a/report.cc
+++ b/report.cc
@@ -384,16 +384,9 @@ expr_t::ptr_op_t report_t::lookup(const string& name)
if (std::strncmp(p, "opt_", 4) == 0) {
p = p + 4;
switch (*p) {
-#if 0
case 'a':
- if (std::strcmp(p, "amount") == 0)
- return MAKE_FUNCTOR(report_t::option_amount);
- break;
-#endif
-
- case 'b':
- if (std::strcmp(p, "bar_") == 0)
- return MAKE_FUNCTOR(report_t::option_bar_);
+ if (std::strcmp(p, "amount_") == 0)
+ return MAKE_FUNCTOR(report_t::option_amount_);
break;
case 'f':
@@ -402,24 +395,32 @@ expr_t::ptr_op_t report_t::lookup(const string& name)
return MAKE_FUNCTOR(report_t::option_format_);
break;
+ case 'j':
+ if (! (*p + 1))
+ return MAKE_FUNCTOR(report_t::option_amount_data);
+ break;
+
+ case 'J':
+ if (! (*p + 1))
+ return MAKE_FUNCTOR(report_t::option_total_data);
+ break;
+
case 'l':
if (std::strcmp(p, "l_") || std::strcmp(p, "limit_"))
return MAKE_FUNCTOR(report_t::option_limit_);
break;
-#if 0
case 't':
- if (! *(p + 1))
- return MAKE_FUNCTOR(report_t::option_amount);
- else if (std::strcmp(p, "total") == 0)
- return MAKE_FUNCTOR(report_t::option_total);
+ if (std::strcmp(p, "t_"))
+ return MAKE_FUNCTOR(report_t::option_amount_);
+ else if (std::strcmp(p, "total_") == 0)
+ return MAKE_FUNCTOR(report_t::option_total_);
break;
case 'T':
- if (! *(p + 1))
- return MAKE_FUNCTOR(report_t::option_total);
+ if (std::strcmp(p, "T_"))
+ return MAKE_FUNCTOR(report_t::option_total_);
break;
-#endif
}
}
break;
diff --git a/report.h b/report.h
index 9cb64839..98b60ce1 100644
--- a/report.h
+++ b/report.h
@@ -187,55 +187,6 @@ public:
chain_xact_handlers(xact_handler_ptr handler,
const bool handle_individual_transactions = true);
- //
- // Config options
- //
-
-#if 0
- void eval(const string& expr) {
- expr_t(expr).calc(*this);
- }
- value_t option_eval(call_scope_t& args) {
- eval(args[0].as_string());
- return NULL_VALUE;
- }
-
- value_t option_amount_(call_scope_t& args) {
- eval(string("t=") + args[0].as_string());
- return NULL_VALUE;
- }
- value_t option_total_(call_scope_t& args) {
- eval(string("T()=") + args[0].as_string());
- return NULL_VALUE;
- }
-
- value_t option_raw(call_scope_t&) {
- raw_mode = true;
- return NULL_VALUE;
- }
-#endif
-
- value_t option_format_(call_scope_t& args) {
- format_string = args[0].as_string();
- return NULL_VALUE;
- }
-
- value_t option_foo(call_scope_t&) {
- std::cout << "This is foo" << std::endl;
- return NULL_VALUE;
- }
- value_t option_bar_(call_scope_t& args) {
- std::cout << "This is bar: " << args[0] << std::endl;
- return args[0];
- }
-
- value_t option_limit_(call_scope_t& args) {
- if (! predicate.empty())
- predicate += "&";
- predicate += args[0].as_string();
- return true;
- }
-
#if 0
//////////////////////////////////////////////////////////////////////
//
@@ -251,17 +202,17 @@ public:
throw 0;
}
- value_t option_help_calc(call_scope_t& args) { //
+ value_t option_help_calc(call_scope_t& args) {
option_calc_help(std::cout);
throw 0;
}
- value_t option_help_disp(call_scope_t& args) { //
+ value_t option_help_disp(call_scope_t& args) {
option_disp_help(std::cout);
throw 0;
}
- value_t option_help_comm(call_scope_t& args) { //
+ value_t option_help_comm(call_scope_t& args) {
option_comm_help(std::cout);
throw 0;
}
@@ -297,7 +248,7 @@ public:
config->cache_file = resolve_path(optarg);
}
- value_t option_no_cache(call_scope_t& args) { //
+ value_t option_no_cache(call_scope_t& args) {
config->cache_file = "<none>";
}
@@ -317,11 +268,11 @@ public:
::setenv("DEBUG_CLASS", optarg, 1);
}
- value_t option_verbose(call_scope_t& args) { //
+ value_t option_verbose(call_scope_t& args) {
config->verbose_mode = true;
}
- value_t option_trace(call_scope_t& args) { //
+ value_t option_trace(call_scope_t& args) {
config->trace_mode = true;
}
@@ -329,7 +280,7 @@ public:
//
// Report filtering
- value_t option_effective(call_scope_t& args) { //
+ value_t option_effective(call_scope_t& args) {
xact_t::use_effective_date = true;
}
@@ -393,32 +344,35 @@ public:
report->predicate += "L";
}
- value_t option_lots(call_scope_t& args) { //
+ value_t option_lots(call_scope_t& args) {
report->keep_price =
report->keep_date =
report->keep_tag = true;
}
- value_t option_lot_prices(call_scope_t& args) { //
+ value_t option_lot_prices(call_scope_t& args) {
report->keep_price = true;
}
- value_t option_lot_dates(call_scope_t& args) { //
+ value_t option_lot_dates(call_scope_t& args) {
report->keep_date = true;
}
- value_t option_lot_tags(call_scope_t& args) { //
+ value_t option_lot_tags(call_scope_t& args) {
report->keep_tag = true;
}
+#endif
//////////////////////////////////////////////////////////////////////
//
// Output customization
- value_t option_format(call_scope_t& args) { // F:
- report->format_string = optarg;
+ value_t option_format_(call_scope_t& args) { // F:
+ format_string = args[0].as_string();
+ return true;
}
+#if 0
value_t option_date_format(call_scope_t& args) { // y:
report->date_output_format = optarg;
}
@@ -511,7 +465,7 @@ public:
report->show_subtotal = true;
}
- value_t option_totals(call_scope_t& args) { //
+ value_t option_totals(call_scope_t& args) {
report->show_totals = true;
}
@@ -519,12 +473,12 @@ public:
report->sort_string = optarg;
}
- value_t option_sort_entries(call_scope_t& args) { //
+ value_t option_sort_entries(call_scope_t& args) {
report->sort_string = optarg;
report->entry_sort = true;
}
- value_t option_sort_all(call_scope_t& args) { //
+ value_t option_sort_all(call_scope_t& args) {
report->sort_string = optarg;
report->entry_sort = false;
report->sort_all = true;
@@ -539,7 +493,7 @@ public:
report->show_related = true;
}
- value_t option_descend(call_scope_t& args) { //
+ value_t option_descend(call_scope_t& args) {
std::string arg(optarg);
std::string::size_type beg = 0;
report->descend_expr = "";
@@ -552,7 +506,7 @@ public:
std::string(arg, beg) + "}");
}
- value_t option_descend_if(call_scope_t& args) { //
+ value_t option_descend_if(call_scope_t& args) {
report->descend_expr = optarg;
}
@@ -589,7 +543,7 @@ public:
}
}
- value_t option_daily(call_scope_t& args) { //
+ value_t option_daily(call_scope_t& args) {
if (report->report_period.empty())
report->report_period = "daily";
else
@@ -610,7 +564,7 @@ public:
report->report_period = std::string("monthly ") + report->report_period;
}
- value_t option_quarterly(call_scope_t& args) { //
+ value_t option_quarterly(call_scope_t& args) {
if (report->report_period.empty())
report->report_period = "quarterly";
else
@@ -624,7 +578,7 @@ public:
report->report_period = std::string("yearly ") + report->report_period;
}
- value_t option_dow(call_scope_t& args) { //
+ value_t option_dow(call_scope_t& args) {
report->days_of_the_week = true;
}
@@ -636,19 +590,19 @@ public:
report->comm_as_payee = true;
}
- value_t option_code_as_payee(call_scope_t& args) { //
+ value_t option_code_as_payee(call_scope_t& args) {
report->code_as_payee = true;
}
- value_t option_budget(call_scope_t& args) { //
+ value_t option_budget(call_scope_t& args) {
report->budget_flags = BUDGET_BUDGETED;
}
- value_t option_add_budget(call_scope_t& args) { //
+ value_t option_add_budget(call_scope_t& args) {
report->budget_flags = BUDGET_BUDGETED | BUDGET_UNBUDGETED;
}
- value_t option_unbudgeted(call_scope_t& args) { //
+ value_t option_unbudgeted(call_scope_t& args) {
report->budget_flags = BUDGET_UNBUDGETED;
}
@@ -663,15 +617,16 @@ public:
value_t option_reconcile_date(call_scope_t& args) { // :
report->reconcile_date = optarg;
}
+#endif
- value_t option_limit(call_scope_t& args) { // l:
- if (! report->predicate.empty())
- report->predicate += "&";
- report->predicate += "(";
- report->predicate += optarg;
- report->predicate += ")";
+ value_t option_limit_(call_scope_t& args) { // l:
+ if (! predicate.empty())
+ predicate += "&";
+ predicate += args[0].as_string();
+ return true;
}
+#if 0
value_t option_only(call_scope_t& args) { // :
if (! report->secondary_predicate.empty())
report->secondary_predicate += "&";
@@ -687,31 +642,40 @@ public:
report->display_predicate += optarg;
report->display_predicate += ")";
}
+#endif
- value_t option_amount(call_scope_t& args) { // t:
- ledger::amount_expr = optarg;
+ value_t option_amount_(call_scope_t& args) { // t:
+ amount_expr = args[0].as_string();
+ return true;
}
- value_t option_total(call_scope_t& args) { // T:
- ledger::total_expr = optarg;
+ value_t option_total_(call_scope_t& args) { // T:
+ total_expr = args[0].as_string();
+ return true;
}
- value_t option_amount_data(call_scope_t& args) { // j
- report->format_string = config->plot_amount_format;
+ value_t get_amount_expr(call_scope_t& scope);
+ value_t get_total_expr(call_scope_t& scope);
+
+ value_t option_amount_data(call_scope_t&) { // j
+ format_string = session.plot_amount_format;
+ return true;
}
- value_t option_total_data(call_scope_t& args) { // J
- report->format_string = config->plot_total_format;
+ value_t option_total_data(call_scope_t&) { // J
+ format_string = session.plot_total_format;
+ return true;
}
- value_t option_ansi(call_scope_t& args) { //
+#if 0
+ value_t option_ansi(call_scope_t& args) {
format_t::ansi_codes = true;
format_t::ansi_invert = false;
}
- value_t option_ansi_invert(call_scope_t& args) { //
+ value_t option_ansi_invert(call_scope_t& args) {
format_t::ansi_codes =
- format_t::ansi_invert = true;
+ format_t::ansi_invert = true;
}
//////////////////////////////////////////////////////////////////////
@@ -735,8 +699,8 @@ public:
}
value_t option_quantity(call_scope_t& args) { // O
- ledger::amount_expr = "a";
- ledger::total_expr = "O";
+ ledger::amount_expr = "amount";
+ ledger::total_expr = "total";
}
value_t option_basis(call_scope_t& args) { // B
@@ -782,13 +746,6 @@ public:
#endif
//
- // Formatting functions
- //
-
- value_t get_amount_expr(call_scope_t& scope);
- value_t get_total_expr(call_scope_t& scope);
-
- //
// Scope members
//