diff options
author | John Wiegley <johnw@newartisans.com> | 2013-01-29 09:35:02 -0800 |
---|---|---|
committer | John Wiegley <johnw@newartisans.com> | 2013-01-29 09:35:02 -0800 |
commit | 69001d927afd1fa8fa4ed121591505e34d253c04 (patch) | |
tree | 200c676f6111f60f2eca16e1b6b75a4b992bdd10 /src/output.cc | |
parent | 0e91b174b5fabbd1b0e192522c0be66cf7f755e7 (diff) | |
parent | 3e72a51dc3d296c9f647efaf4cbfbbdcf4bf6df1 (diff) | |
download | fork-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.cc | 28 |
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); |