Added new --meta and --meta-width options
The usages are: --meta=<TAG> prepend value of TAG before every line --meta-width=<NUM> force the meta column to be NUM wide --meta=<TAG>:<NUM> shortcut that also applies --meta-width
This commit is contained in:
parent
d7b8095c3d
commit
36b616da5e
2 changed files with 52 additions and 9 deletions
|
|
@ -93,6 +93,33 @@ void report_t::normalize_options(const string& verb)
|
|||
start_of_week = *weekday;
|
||||
}
|
||||
|
||||
long meta_width = -1;
|
||||
|
||||
if (! HANDLED(prepend_format_) && HANDLED(meta_)) {
|
||||
if (! HANDLED(meta_width_)) {
|
||||
string::size_type i = HANDLER(meta_).str().find(':');
|
||||
if (i != string::npos) {
|
||||
HANDLED(meta_width_).on_with
|
||||
(string("?normalize"),
|
||||
lexical_cast<long>(string(HANDLER(meta_).str(), i + 1)));
|
||||
HANDLED(meta_).on(string("?normalize"),
|
||||
string(HANDLER(meta_).str(), 0, i));
|
||||
}
|
||||
}
|
||||
if (HANDLED(meta_width_)) {
|
||||
HANDLER(prepend_format_).on
|
||||
(string("?normalize"),
|
||||
string("%(justify(truncated(tag(\"") +
|
||||
HANDLER(meta_).str() + "\"), " +
|
||||
HANDLED(meta_width_).value.to_string() + " - 1), " +
|
||||
HANDLED(meta_width_).value.to_string() + "))");
|
||||
meta_width = HANDLED(meta_width_).value.to_long();
|
||||
} else {
|
||||
HANDLER(prepend_format_).on(string("?normalize"), string("%(tag(\"") +
|
||||
HANDLER(meta_).str() + "\"))");
|
||||
}
|
||||
}
|
||||
|
||||
if (verb == "print" || verb == "xact" || verb == "dump") {
|
||||
HANDLER(related).on_only(string("?normalize"));
|
||||
HANDLER(related_all).on_only(string("?normalize"));
|
||||
|
|
@ -165,6 +192,9 @@ void report_t::normalize_options(const string& verb)
|
|||
else
|
||||
cols = 80L;
|
||||
|
||||
if (meta_width > 0)
|
||||
cols -= meta_width;
|
||||
|
||||
if (cols > 0) {
|
||||
DEBUG("auto.columns", "cols = " << cols);
|
||||
|
||||
|
|
@ -187,11 +217,11 @@ void report_t::normalize_options(const string& verb)
|
|||
HANDLER(total_width_).value.to_long() :
|
||||
amount_width);
|
||||
|
||||
DEBUG("auto.columns", "date_width = " << date_width);
|
||||
DEBUG("auto.columns", "payee_width = " << payee_width);
|
||||
DEBUG("auto.columns", "date_width = " << date_width);
|
||||
DEBUG("auto.columns", "payee_width = " << payee_width);
|
||||
DEBUG("auto.columns", "account_width = " << account_width);
|
||||
DEBUG("auto.columns", "amount_width = " << amount_width);
|
||||
DEBUG("auto.columns", "total_width = " << total_width);
|
||||
DEBUG("auto.columns", "amount_width = " << amount_width);
|
||||
DEBUG("auto.columns", "total_width = " << total_width);
|
||||
|
||||
if (! HANDLER(date_width_).specified &&
|
||||
! HANDLER(payee_width_).specified &&
|
||||
|
|
@ -207,6 +237,8 @@ void report_t::normalize_options(const string& verb)
|
|||
}
|
||||
}
|
||||
|
||||
if (! HANDLED(meta_width_))
|
||||
HANDLER(meta_width_).on_with(string("?normalize"), 0L);
|
||||
if (! HANDLER(date_width_).specified)
|
||||
HANDLER(date_width_).on_with(string("?normalize"), date_width);
|
||||
if (! HANDLER(payee_width_).specified)
|
||||
|
|
@ -862,6 +894,8 @@ option_t<report_t> * report_t::lookup_option(const char * p)
|
|||
case 'm':
|
||||
OPT(market);
|
||||
else OPT(monthly);
|
||||
else OPT(meta_);
|
||||
else OPT(meta_width_);
|
||||
break;
|
||||
case 'n':
|
||||
OPT_CH(collapse);
|
||||
|
|
|
|||
19
src/report.h
19
src/report.h
|
|
@ -264,6 +264,7 @@ public:
|
|||
HANDLER(lots).report(out);
|
||||
HANDLER(lots_actual).report(out);
|
||||
HANDLER(market).report(out);
|
||||
HANDLER(meta_).report(out);
|
||||
HANDLER(monthly).report(out);
|
||||
HANDLER(no_total).report(out);
|
||||
HANDLER(now_).report(out);
|
||||
|
|
@ -312,6 +313,7 @@ public:
|
|||
HANDLER(weekly).report(out);
|
||||
HANDLER(wide).report(out);
|
||||
HANDLER(yearly).report(out);
|
||||
HANDLER(meta_width_).report(out);
|
||||
HANDLER(date_width_).report(out);
|
||||
HANDLER(payee_width_).report(out);
|
||||
HANDLER(account_width_).report(out);
|
||||
|
|
@ -619,6 +621,8 @@ public:
|
|||
.set_expr(string("--market"), "market(total_expr, date, exchange)");
|
||||
});
|
||||
|
||||
OPTION(report_t, meta_);
|
||||
|
||||
OPTION_(report_t, monthly, DO() { // -M
|
||||
parent->HANDLER(period_).on(string("--monthly"), "monthly");
|
||||
});
|
||||
|
|
@ -776,12 +780,13 @@ public:
|
|||
" %(ansify_if(justify(truncated(account, account_width, abbrev_len), "
|
||||
" account_width), blue if color))"
|
||||
" %(justify(scrub(display_amount), amount_width, "
|
||||
" 3 + date_width + payee_width + account_width + amount_width, "
|
||||
" true, color))"
|
||||
" 3 + meta_width + date_width + payee_width + account_width"
|
||||
" + amount_width, true, color))"
|
||||
" %(justify(scrub(display_total), total_width, "
|
||||
" 4 + date_width + payee_width + account_width + amount_width "
|
||||
" + total_width, true, color))\n%/"
|
||||
"%(justify(\" \", 2 + date_width + payee_width))%$3 %$4 %$5\n");
|
||||
" 4 + meta_width + date_width + payee_width + account_width"
|
||||
" + amount_width + total_width, true, color))\n%/"
|
||||
"%(justify(\" \", 2 + date_width + payee_width))"
|
||||
"%$3 %$4 %$5\n");
|
||||
});
|
||||
|
||||
OPTION(report_t, related); // -r
|
||||
|
|
@ -891,6 +896,10 @@ public:
|
|||
parent->HANDLER(period_).on(string("--yearly"), "yearly");
|
||||
});
|
||||
|
||||
OPTION__(report_t, meta_width_,
|
||||
bool specified;
|
||||
CTOR(report_t, meta_width_) { specified = false; }
|
||||
DO_(args) { value = args[1].to_long(); specified = true; });
|
||||
OPTION__(report_t, date_width_,
|
||||
bool specified;
|
||||
CTOR(report_t, date_width_) { specified = false; }
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue