diff options
author | John Wiegley <johnw@newartisans.com> | 2010-05-22 21:05:30 -0400 |
---|---|---|
committer | John Wiegley <johnw@newartisans.com> | 2010-05-22 21:35:03 -0400 |
commit | b5c9be4d29fab1388e195600d659602ae19b8f4e (patch) | |
tree | 51dcdd9e9f15e1df96e34690638e24755608cc90 /src | |
parent | 9557a9d955f4272ac4ad7b727af18ab388b1f92e (diff) | |
download | fork-ledger-b5c9be4d29fab1388e195600d659602ae19b8f4e.tar.gz fork-ledger-b5c9be4d29fab1388e195600d659602ae19b8f4e.tar.bz2 fork-ledger-b5c9be4d29fab1388e195600d659602ae19b8f4e.zip |
Created new valexpr variable display_account
Where display_account might be '(Expenses:Food)', account will always be
'Expenses:Food'. account is now used by all matching and query
operations, while display_account is used in the various report outputs
(besides balance, which never distinguished virtual accounts).
Fixes F2832452-4521-49A3-B854-F4E12CC4D82E
Diffstat (limited to 'src')
-rw-r--r-- | src/post.cc | 32 | ||||
-rw-r--r-- | src/report.h | 10 |
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))" |