summaryrefslogtreecommitdiff
path: root/src/output.cc
diff options
context:
space:
mode:
authorJohn Wiegley <johnw@newartisans.com>2013-01-29 09:35:02 -0800
committerJohn Wiegley <johnw@newartisans.com>2013-01-29 09:35:02 -0800
commit69001d927afd1fa8fa4ed121591505e34d253c04 (patch)
tree200c676f6111f60f2eca16e1b6b75a4b992bdd10 /src/output.cc
parent0e91b174b5fabbd1b0e192522c0be66cf7f755e7 (diff)
parent3e72a51dc3d296c9f647efaf4cbfbbdcf4bf6df1 (diff)
downloadfork-ledger-69001d927afd1fa8fa4ed121591505e34d253c04.tar.gz
fork-ledger-69001d927afd1fa8fa4ed121591505e34d253c04.tar.bz2
fork-ledger-69001d927afd1fa8fa4ed121591505e34d253c04.zip
Merge pull request #131 from enderw88/add-tags-command
Addes tags command and --values option
Diffstat (limited to 'src/output.cc')
-rw-r--r--src/output.cc28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/output.cc b/src/output.cc
index f433f8d1..6ed7f861 100644
--- a/src/output.cc
+++ b/src/output.cc
@@ -318,6 +318,34 @@ void report_payees::operator()(post_t& post)
(*i).second++;
}
+void report_tags::flush()
+{
+ std::ostream& out(report.output_stream);
+
+ foreach (tags_pair& entry, tags) {
+ if (report.HANDLED(count))
+ out << entry.second << ' ';
+ out << entry.first << '\n';
+ }
+}
+
+void report_tags::operator()(post_t& post)
+{
+ if(post.metadata){
+ foreach (const item_t::string_map::value_type& data, *post.metadata){
+ string tag=data.first;
+ if(report.HANDLED(values) && (data.second).first){
+ tag+=": "+ (data.second).first.get().to_string();
+ }
+ std::map<string, std::size_t>::iterator i = tags.find(tag);
+ if (i == tags.end())
+ tags.insert(tags_pair(tag, 1));
+ else
+ (*i).second++;
+ }
+ }
+}
+
void report_commodities::flush()
{
std::ostream& out(report.output_stream);