summaryrefslogtreecommitdiff
path: root/src/report.cc
diff options
context:
space:
mode:
authorJohn Wiegley <johnw@newartisans.com>2010-06-24 20:33:52 -0400
committerJohn Wiegley <johnw@newartisans.com>2010-06-24 20:37:31 -0400
commit8a29c03490d780ab3a23f552c15f2314a43f8a78 (patch)
tree7547625e1876435882c175282b81d19bb7f74a5e /src/report.cc
parent011bf030a27f75c8b127b9b044a6580fc124a986 (diff)
downloadfork-ledger-8a29c03490d780ab3a23f552c15f2314a43f8a78.tar.gz
fork-ledger-8a29c03490d780ab3a23f552c15f2314a43f8a78.tar.bz2
fork-ledger-8a29c03490d780ab3a23f552c15f2314a43f8a78.zip
Added "format" value expression function
This function evaluates formatting strings, returning a string. For example: format("%(amount)") This is equivalent to "to_string(amount)".
Diffstat (limited to 'src/report.cc')
-rw-r--r--src/report.cc10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/report.cc b/src/report.cc
index 8f06911c..8660ed64 100644
--- a/src/report.cc
+++ b/src/report.cc
@@ -549,6 +549,14 @@ value_t report_t::fn_trim(call_scope_t& args)
}
}
+value_t report_t::fn_format(call_scope_t& args)
+{
+ format_t format(args.get<string>(0));
+ std::ostringstream out;
+ out << format(args);
+ return string_value(out.str());
+}
+
value_t report_t::fn_print(call_scope_t& args)
{
std::ostream& out(output_stream);
@@ -1178,6 +1186,8 @@ expr_t::ptr_op_t report_t::lookup(const symbol_t::kind_t kind,
case 'f':
if (is_eq(p, "format_date"))
return MAKE_FUNCTOR(report_t::fn_format_date);
+ else if (is_eq(p, "format"))
+ return MAKE_FUNCTOR(report_t::fn_format);
else if (is_eq(p, "floor"))
return MAKE_FUNCTOR(report_t::fn_floor);
break;