diff options
author | John Wiegley <johnw@newartisans.com> | 2009-10-31 03:22:38 -0400 |
---|---|---|
committer | John Wiegley <johnw@newartisans.com> | 2009-10-31 03:22:38 -0400 |
commit | 77c9d7b1ff9fc0033e653453e08d042b2e95692b (patch) | |
tree | 7b8a2746b127dd307f7f619bfefa66ee5446f699 /src | |
parent | d5b1ee56e188c49f1f1b2c8bfc5e0cedcf320f17 (diff) | |
download | fork-ledger-77c9d7b1ff9fc0033e653453e08d042b2e95692b.tar.gz fork-ledger-77c9d7b1ff9fc0033e653453e08d042b2e95692b.tar.bz2 fork-ledger-77c9d7b1ff9fc0033e653453e08d042b2e95692b.zip |
Add valexpr functions for lot dates, prices and tags
Diffstat (limited to 'src')
-rw-r--r-- | src/report.cc | 33 | ||||
-rw-r--r-- | src/report.h | 3 |
2 files changed, 36 insertions, 0 deletions
diff --git a/src/report.cc b/src/report.cc index 7d74952c..565597c6 100644 --- a/src/report.cc +++ b/src/report.cc @@ -315,6 +315,39 @@ value_t report_t::fn_price(call_scope_t& scope) return args.value_at(0).price(); } +value_t report_t::fn_lot_date(call_scope_t& scope) +{ + interactive_t args(scope, "v"); + if (args.value_at(0).is_annotated()) { + const annotation_t& details(args.value_at(0).annotation()); + if (details.date) + return *details.date; + } + return NULL_VALUE; +} + +value_t report_t::fn_lot_price(call_scope_t& scope) +{ + interactive_t args(scope, "v"); + if (args.value_at(0).is_annotated()) { + const annotation_t& details(args.value_at(0).annotation()); + if (details.price) + return *details.price; + } + return NULL_VALUE; +} + +value_t report_t::fn_lot_tag(call_scope_t& scope) +{ + interactive_t args(scope, "v"); + if (args.value_at(0).is_annotated()) { + const annotation_t& details(args.value_at(0).annotation()); + if (details.tag) + return string_value(*details.tag); + } + return NULL_VALUE; +} + namespace { value_t fn_black(call_scope_t&) { return string_value("black"); diff --git a/src/report.h b/src/report.h index c1ad1997..0fe7d05b 100644 --- a/src/report.h +++ b/src/report.h @@ -160,6 +160,9 @@ public: value_t fn_ansify_if(call_scope_t& scope); value_t fn_percent(call_scope_t& scope); value_t fn_price(call_scope_t& scope); + value_t fn_lot_date(call_scope_t& scope); + value_t fn_lot_price(call_scope_t& scope); + value_t fn_lot_tag(call_scope_t& scope); value_t fn_now(call_scope_t&) { return terminus; |