diff options
-rw-r--r-- | src/iterators.cc | 4 | ||||
-rw-r--r-- | src/iterators.h | 2 | ||||
-rw-r--r-- | src/post.cc | 6 | ||||
-rw-r--r-- | src/post.h | 1 | ||||
-rw-r--r-- | src/report.h | 2 | ||||
-rw-r--r-- | test/baseline/opt-pricesdb-format.test | 19 |
6 files changed, 31 insertions, 3 deletions
diff --git a/src/iterators.cc b/src/iterators.cc index 9b07ace3..63cbb9b2 100644 --- a/src/iterators.cc +++ b/src/iterators.cc @@ -101,7 +101,7 @@ void posts_commodities_iterator::reset(journal_t& journal) foreach (commodity_t::base_t::history_map::value_type hpair, pair.second.prices) { xact_t * xact; - string symbol = hpair.second.commodity().symbol(); + string symbol = hpair.second.commodity().symbol(); std::map<string, xact_t *>::iterator i = xacts_by_commodity.find(symbol); @@ -123,6 +123,8 @@ void posts_commodities_iterator::reset(journal_t& journal) temp.amount = hpair.second; temp.set_flags(ITEM_GENERATED | ITEM_TEMP); + temp.xdata().datetime = hpair.first; + xact->add_post(&temp); } } diff --git a/src/iterators.h b/src/iterators.h index 67293c5c..ae2ddaf9 100644 --- a/src/iterators.h +++ b/src/iterators.h @@ -175,7 +175,7 @@ protected: std::list<post_t> post_temps; std::list<account_t> acct_temps; - xacts_list xact_temps; + xacts_list xact_temps; public: posts_commodities_iterator() { diff --git a/src/post.cc b/src/post.cc index 3a0f3cc4..8eccf03d 100644 --- a/src/post.cc +++ b/src/post.cc @@ -244,6 +244,10 @@ namespace { return long(post.reported_account()->depth); } + value_t get_datetime(post_t& post) { + return post.xdata().datetime; + } + template <value_t (*Func)(post_t&)> value_t get_wrapper(call_scope_t& scope) { return (*Func)(find_scope<post_t>(scope)); @@ -282,6 +286,8 @@ expr_t::ptr_op_t post_t::lookup(const string& name) case 'd': if (name == "depth") return WRAP_FUNCTOR(get_wrapper<&get_account_depth>); + else if (name == "datetime") + return WRAP_FUNCTOR(get_wrapper<&get_datetime>); break; case 'h': @@ -140,6 +140,7 @@ public: value_t total; std::size_t count; date_t date; + datetime_t datetime; account_t * account; void * ptr; diff --git a/src/report.h b/src/report.h index d48b5a78..89304d31 100644 --- a/src/report.h +++ b/src/report.h @@ -626,7 +626,7 @@ public: OPTION__(report_t, pricesdb_format_, CTOR(report_t, pricesdb_format_) { on(none, - "P %[%Y/%m/%d %H:%M:%S] %A %t\n"); + "P %(datetime) %(account) %(scrub(display_amount))\n"); }); OPTION__(report_t, print_format_, CTOR(report_t, print_format_) { diff --git a/test/baseline/opt-pricesdb-format.test b/test/baseline/opt-pricesdb-format.test new file mode 100644 index 00000000..28998903 --- /dev/null +++ b/test/baseline/opt-pricesdb-format.test @@ -0,0 +1,19 @@ +pricesdb --pricesdb-format='P %(date) %(scrub(display_amount))\n' +<<< +P 2009/01/01 13:30:00 AAPL $10.00 +P 2009/01/01 14:30:00 AAPL $20.00 +P 2009/01/01 15:30:00 AAPL $30.00 +P 2009/01/01 16:30:00 AAPL $40.00 +P 2009/02/01 17:30:00 AAPL $50.00 + +2009/03/01 Purchase + Assets:Brokerage 100 AAPL + Income +>>>1 +P 09-Jan-01 $10.00 +P 09-Jan-01 $20.00 +P 09-Jan-01 $30.00 +P 09-Jan-01 $40.00 +P 09-Feb-01 $50.00 +>>>2 +=== 0 |