From 6b998aee1023112f27cd2d34d85b189714a944e0 Mon Sep 17 00:00:00 2001 From: Michael Budde Date: Thu, 25 Jan 2018 19:21:53 +0100 Subject: [PATCH] Add support for --prepend-format in accounts command Add support for the `--prepend-format` and `--prepend-width` options in the `accounts` command. --- src/output.cc | 15 +++++++++++++++ test/baseline/opt-prepend-format.test | 5 +++++ test/baseline/opt-prepend-width.test | 5 +++++ 3 files changed, 25 insertions(+) diff --git a/src/output.cc b/src/output.cc index 2a8c8201..1b612c12 100644 --- a/src/output.cc +++ b/src/output.cc @@ -282,8 +282,23 @@ void format_accounts::operator()(account_t& account) void report_accounts::flush() { std::ostream& out(report.output_stream); + format_t prepend_format; + std::size_t prepend_width; + + if (report.HANDLED(prepend_format_)) { + prepend_format.parse_format(report.HANDLER(prepend_format_).str()); + prepend_width = report.HANDLED(prepend_width_) + ? lexical_cast(report.HANDLER(prepend_width_).str()) + : 0; + } foreach (accounts_pair& entry, accounts) { + if (prepend_format) { + bind_scope_t bound_scope(report, *entry.first); + out.width(static_cast(prepend_width)); + out << prepend_format(bound_scope); + } + if (report.HANDLED(count)) out << entry.second << ' '; out << *entry.first << '\n'; diff --git a/test/baseline/opt-prepend-format.test b/test/baseline/opt-prepend-format.test index 105930f1..de79d72e 100644 --- a/test/baseline/opt-prepend-format.test +++ b/test/baseline/opt-prepend-format.test @@ -15,3 +15,8 @@ VMMXX07-Feb-02 RD VMMXX As:Inves:Vanguar:VMMXX 0.350 VMMXX 0.350 VMMXX In:Divid:Vanguar:VMMXX $-0.35 $-0.35 0.350 VMMXX end test + +test accounts --prepend-format "%(account_base) " +VMMXX Assets:Investments:Vanguard:VMMXX +VMMXX Income:Dividends:Vanguard:VMMXX +end test diff --git a/test/baseline/opt-prepend-width.test b/test/baseline/opt-prepend-width.test index c20baeb4..0efd220f 100644 --- a/test/baseline/opt-prepend-width.test +++ b/test/baseline/opt-prepend-width.test @@ -15,3 +15,8 @@ test reg --prepend-format "%(account_base) " --prepend-width=10 VMMXX In:Divid:Vanguar:VMMXX $-0.35 $-0.35 0.350 VMMXX end test + +test accounts --prepend-format "%(account_base) " --prepend-width=10 + VMMXX Assets:Investments:Vanguard:VMMXX + VMMXX Income:Dividends:Vanguard:VMMXX +end test