summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/post.cc32
-rw-r--r--src/report.h10
2 files changed, 29 insertions, 13 deletions
diff --git a/src/post.cc b/src/post.cc
index 18c566c4..f1f3e96a 100644
--- a/src/post.cc
+++ b/src/post.cc
@@ -236,7 +236,7 @@ namespace {
return 1L;
}
- value_t get_account(call_scope_t& scope)
+ value_t account_name(call_scope_t& scope)
{
in_context_t<post_t> env(scope, "&v");
@@ -279,14 +279,28 @@ namespace {
} else {
name = env->reported_account()->fullname();
}
+ return string_value(name);
+ }
- if (env->has_flags(POST_VIRTUAL)) {
- if (env->must_balance())
- name = string("[") + name + "]";
- else
- name = string("(") + name + ")";
+ value_t get_display_account(call_scope_t& scope)
+ {
+ in_context_t<post_t> env(scope, "&v");
+
+ value_t acct = account_name(scope);
+ if (acct.is_string()) {
+ if (env->has_flags(POST_VIRTUAL)) {
+ if (env->must_balance())
+ acct = string_value(string("[") + acct.as_string() + "]");
+ else
+ acct = string_value(string("(") + acct.as_string() + ")");
+ }
}
- return string_value(name);
+ return acct;
+ }
+
+ value_t get_account(call_scope_t& scope)
+ {
+ return account_name(scope);
}
value_t get_account_id(post_t& post) {
@@ -398,7 +412,9 @@ expr_t::ptr_op_t post_t::lookup(const symbol_t::kind_t kind,
break;
case 'd':
- if (name == "depth")
+ if (name == "display_account")
+ return WRAP_FUNCTOR(get_display_account);
+ else if (name == "depth")
return WRAP_FUNCTOR(get_wrapper<&get_account_depth>);
else if (name == "datetime")
return WRAP_FUNCTOR(get_wrapper<&get_datetime>);
diff --git a/src/report.h b/src/report.h
index 64c14858..aff4af91 100644
--- a/src/report.h
+++ b/src/report.h
@@ -463,7 +463,7 @@ public:
"%(quoted(date)),"
"%(quoted(code)),"
"%(quoted(payee)),"
- "%(quoted(account)),"
+ "%(quoted(display_account)),"
"%(quoted(commodity)),"
"%(quoted(quantity(scrub(display_amount)))),"
"%(quoted(cleared ? \"*\" : (pending ? \"!\" : \"\"))),"
@@ -752,13 +752,13 @@ public:
OPTION__(report_t, prices_format_, CTOR(report_t, prices_format_) {
on(none,
- "%(date) %-8(account) %(justify(scrub(display_amount), 12, "
+ "%(date) %-8(display_account) %(justify(scrub(display_amount), 12, "
" 2 + 9 + 8 + 12, true, color))\n");
});
OPTION__(report_t, pricedb_format_, CTOR(report_t, pricedb_format_) {
on(none,
- "P %(datetime) %(account) %(scrub(display_amount))\n");
+ "P %(datetime) %(display_account) %(scrub(display_amount))\n");
});
OPTION(report_t, print_virtual);
@@ -785,8 +785,8 @@ public:
" if color & date > today))"
" %(ansify_if(justify(truncated(payee, payee_width), payee_width), "
" bold if color & !cleared & actual))"
- " %(ansify_if(justify(truncated(account, account_width, abbrev_len), "
- " account_width), blue if color))"
+ " %(ansify_if(justify(truncated(display_account, account_width, "
+ " abbrev_len), account_width), blue if color))"
" %(justify(scrub(display_amount), amount_width, "
" 3 + meta_width + date_width + payee_width + account_width"
" + amount_width + prepend_width, true, color))"