summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Wiegley <johnw@newartisans.com>2013-01-29 09:36:03 -0800
committerJohn Wiegley <johnw@newartisans.com>2013-01-29 09:36:03 -0800
commit1e709d1040eb2c10f7ab0ea80e903c12fcb0f35c (patch)
treea3ab9b26047500e8a4582e3715ecfead19389b3c
parent69001d927afd1fa8fa4ed121591505e34d253c04 (diff)
parentf9da94c909c57f416bec0266dd20b931f556a7a9 (diff)
downloadfork-ledger-1e709d1040eb2c10f7ab0ea80e903c12fcb0f35c.tar.gz
fork-ledger-1e709d1040eb2c10f7ab0ea80e903c12fcb0f35c.tar.bz2
fork-ledger-1e709d1040eb2c10f7ab0ea80e903c12fcb0f35c.zip
Merge pull request #132 from enderw88/bug514-sort-accounts-and-commodities
Fixes bug 514. accounts and commodities output now sorts
-rw-r--r--src/account.h7
-rw-r--r--src/commodity.h7
-rw-r--r--src/output.h4
-rw-r--r--test/baseline/cmd-accounts.test6
-rw-r--r--test/baseline/cmd-commodities.test4
-rw-r--r--test/baseline/opt-count.test6
6 files changed, 24 insertions, 10 deletions
diff --git a/src/account.h b/src/account.h
index a2fcb8de..3642ada0 100644
--- a/src/account.h
+++ b/src/account.h
@@ -308,6 +308,13 @@ std::ostream& operator<<(std::ostream& out, const account_t& account);
void put_account(property_tree::ptree& pt, const account_t& acct,
function<bool(const account_t&)> pred);
+//simple struct added to allow std::map to compare accounts in the accounts report
+struct account_compare {
+ bool operator() (const account_t& lhs, const account_t& rhs){
+ return (lhs.fullname().compare(rhs.fullname()) < 0);
+ }
+};
+
} // namespace ledger
#endif // _ACCOUNT_H
diff --git a/src/commodity.h b/src/commodity.h
index 1d69b689..82efac6a 100644
--- a/src/commodity.h
+++ b/src/commodity.h
@@ -351,6 +351,13 @@ inline std::ostream& operator<<(std::ostream& out, const commodity_t& comm) {
void put_commodity(property_tree::ptree& pt, const commodity_t& comm,
bool commodity_details = false);
+//simple struct to allow std::map to compare commodities names
+struct commodity_compare {
+ bool operator() (const commodity_t* lhs, const commodity_t* rhs){
+ return (lhs->symbol().compare(rhs->symbol()) < 0);
+ }
+};
+
} // namespace ledger
#endif // _COMMODITY_H
diff --git a/src/output.h b/src/output.h
index 9895cb44..44eca2d2 100644
--- a/src/output.h
+++ b/src/output.h
@@ -142,7 +142,7 @@ class report_accounts : public item_handler<post_t>
protected:
report_t& report;
- std::map<account_t *, std::size_t> accounts;
+ std::map<account_t *, std::size_t, account_compare> accounts;
typedef std::map<account_t *, std::size_t>::value_type accounts_pair;
@@ -221,7 +221,7 @@ class report_commodities : public item_handler<post_t>
protected:
report_t& report;
- std::map<commodity_t *, std::size_t> commodities;
+ std::map<commodity_t *, std::size_t, commodity_compare> commodities;
typedef std::map<commodity_t *, std::size_t>::value_type commodities_pair;
diff --git a/test/baseline/cmd-accounts.test b/test/baseline/cmd-accounts.test
index be6365fd..2f0310da 100644
--- a/test/baseline/cmd-accounts.test
+++ b/test/baseline/cmd-accounts.test
@@ -15,12 +15,12 @@
Assets:Testing123ÕßDone
test accounts
+Assets:AAA
Assets:Bank
-Equity:Opening balance
+Assets:Testing123ÕßDone
Assets:XXX
-Assets:AAA
Assets:♚
-Assets:Testing123ÕßDone
+Equity:Opening balance
end test
test accounts assets:a
diff --git a/test/baseline/cmd-commodities.test b/test/baseline/cmd-commodities.test
index 0ce6f7a0..719b6798 100644
--- a/test/baseline/cmd-commodities.test
+++ b/test/baseline/cmd-commodities.test
@@ -15,10 +15,10 @@
Income:Rewards
test commodities
-GBP
-AAA
"AA2"
"M&M"
+AAA
+GBP
end test
test commodities Assets:Rewards
diff --git a/test/baseline/opt-count.test b/test/baseline/opt-count.test
index 9c5495c8..7c935c7a 100644
--- a/test/baseline/opt-count.test
+++ b/test/baseline/opt-count.test
@@ -17,14 +17,14 @@
Assets:Cash -30.00 EUR
test accounts --count
-2 Expenses:Phone
4 Assets:Cash
+2 Expenses:Phone
2 Expenses:Rent
end test
test commodities --count
-4 GBP
4 EUR
+4 GBP
end test
test payees --count
@@ -33,8 +33,8 @@ test payees --count
end test
test commodities :rent --count
-1 GBP
1 EUR
+1 GBP
end test
test payees tag bnb --count