[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lmi-commits] [lmi] valyuta/007 c55ec8f6 04/10: Add an option to format
From: |
Greg Chicares |
Subject: |
[lmi-commits] [lmi] valyuta/007 c55ec8f6 04/10: Add an option to format cents as decimal dollars |
Date: |
Tue, 19 Apr 2022 19:00:41 -0400 (EDT) |
branch: valyuta/007
commit c55ec8f6a960b87c94cbb89759449548e108d8dd
Author: Gregory W. Chicares <gchicares@sbcglobal.net>
Commit: Gregory W. Chicares <gchicares@sbcglobal.net>
Add an option to format cents as decimal dollars
---
ledger_test.cpp | 2 ++
ledger_text_formats.cpp | 9 ++++++---
oecumenic_enumerations.hpp | 1 +
3 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/ledger_test.cpp b/ledger_test.cpp
index d2c1df95..57908211 100644
--- a/ledger_test.cpp
+++ b/ledger_test.cpp
@@ -88,12 +88,14 @@ void ledger_test::test_ledger_format()
constexpr std::pair<int,oenum_format_style> f4(2, oe_format_percentage);
constexpr std::pair<int,oenum_format_style> g1(9, oe_format_normal);
constexpr std::pair<int,oenum_format_style> g2(4, oe_format_percentage);
+ constexpr std::pair<int,oenum_format_style> g3(4, oe_cents_as_dollars);
LMI_TEST_EQUAL("3" , ledger_format(pi, f1));
LMI_TEST_EQUAL("3.14" , ledger_format(pi, f2));
LMI_TEST_EQUAL("314%" , ledger_format(pi, f3));
LMI_TEST_EQUAL("314.16%" , ledger_format(pi, f4));
LMI_TEST_EQUAL("3.141592654", ledger_format(pi, g1));
LMI_TEST_EQUAL("314.1593%" , ledger_format(pi, g2));
+ LMI_TEST_EQUAL("0.0314" , ledger_format(pi, g3));
}
void ledger_test::test_speed()
diff --git a/ledger_text_formats.cpp b/ledger_text_formats.cpp
index 67d4c824..4a9293dd 100644
--- a/ledger_text_formats.cpp
+++ b/ledger_text_formats.cpp
@@ -1186,10 +1186,13 @@ std::string ledger_format
interpreter.precision(f.first);
std::string s;
- if(f.second)
+ switch(f.second)
{
- d *= 100;
+ case oe_format_normal: {} break; // Deliberately do nothing.
+ case oe_cents_as_dollars: {d /= 100;} break;
+ case oe_format_percentage: {d *= 100;} break;
}
+
interpreter << d;
interpreter >> s;
if(!interpreter.eof())
@@ -1197,7 +1200,7 @@ std::string ledger_format
alarum() << "Formatting error." << LMI_FLUSH;
}
- if(f.second)
+ if(oe_format_percentage == f.second)
{
s += '%';
}
diff --git a/oecumenic_enumerations.hpp b/oecumenic_enumerations.hpp
index 15754289..61b5ddac 100644
--- a/oecumenic_enumerations.hpp
+++ b/oecumenic_enumerations.hpp
@@ -83,6 +83,7 @@ enum oenum_elasticity
enum oenum_format_style
{oe_format_normal
+ ,oe_cents_as_dollars
,oe_format_percentage
};
- [lmi-commits] [lmi] valyuta/007 updated (4c404956 -> 0b887792), Greg Chicares, 2022/04/19
- [lmi-commits] [lmi] valyuta/007 18a91e63 01/10: Fix dblize()ation in commented-out code, Greg Chicares, 2022/04/19
- [lmi-commits] [lmi] valyuta/007 efa7b7a8 02/10: Add a helper function with a deliberately ugly name, Greg Chicares, 2022/04/19
- [lmi-commits] [lmi] valyuta/007 1aeae253 03/10: Add a unit test for ledger_format(), Greg Chicares, 2022/04/19
- [lmi-commits] [lmi] valyuta/007 c55ec8f6 04/10: Add an option to format cents as decimal dollars,
Greg Chicares <=
- [lmi-commits] [lmi] valyuta/007 6569915e 06/10: Reformat, Greg Chicares, 2022/04/19
- [lmi-commits] [lmi] valyuta/007 0b887792 10/10: Change many more ledger fields to cents, Greg Chicares, 2022/04/19
- [lmi-commits] [lmi] valyuta/007 7b3debe3 07/10: Add a 'divisor' argument to LedgerBase::value_str(), Greg Chicares, 2022/04/19
- [lmi-commits] [lmi] valyuta/007 7535505d 09/10: Change several more ledger fields to cents, Greg Chicares, 2022/04/19
- [lmi-commits] [lmi] valyuta/007 1189d3ac 05/10: Change a ledger field to cents, Greg Chicares, 2022/04/19
- [lmi-commits] [lmi] valyuta/007 2d26a146 08/10: Change several more ledger fields to cents, Greg Chicares, 2022/04/19