summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/amount.cc4
-rw-r--r--src/amount.h1
-rw-r--r--src/commodity.cc11
-rw-r--r--src/commodity.h5
-rw-r--r--src/report.cc2
5 files changed, 16 insertions, 7 deletions
diff --git a/src/amount.cc b/src/amount.cc
index 105b54ef..01caf4ac 100644
--- a/src/amount.cc
+++ b/src/amount.cc
@@ -1233,7 +1233,7 @@ void amount_t::print(std::ostream& _out, const uint_least8_t flags) const
commodity_t& comm(commodity());
if (! comm.has_flags(COMMODITY_STYLE_SUFFIXED)) {
- comm.print(out);
+ comm.print(out, flags & AMOUNT_PRINT_ELIDE_COMMODITY_QUOTES);
if (comm.has_flags(COMMODITY_STYLE_SEPARATED))
out << " ";
}
@@ -1244,7 +1244,7 @@ void amount_t::print(std::ostream& _out, const uint_least8_t flags) const
if (comm.has_flags(COMMODITY_STYLE_SUFFIXED)) {
if (comm.has_flags(COMMODITY_STYLE_SEPARATED))
out << " ";
- comm.print(out);
+ comm.print(out, flags & AMOUNT_PRINT_ELIDE_COMMODITY_QUOTES);
}
// If there are any annotations associated with this commodity, output them
diff --git a/src/amount.h b/src/amount.h
index 09c9dc49..be4c5e45 100644
--- a/src/amount.h
+++ b/src/amount.h
@@ -680,6 +680,7 @@ public:
#define AMOUNT_PRINT_RIGHT_JUSTIFY 0x01
#define AMOUNT_PRINT_COLORIZE 0x02
#define AMOUNT_PRINT_NO_COMPUTED_ANNOTATIONS 0x04
+#define AMOUNT_PRINT_ELIDE_COMMODITY_QUOTES 0x08
void print(std::ostream& out,
const uint_least8_t flags = AMOUNT_PRINT_NO_FLAGS) const;
diff --git a/src/commodity.cc b/src/commodity.cc
index 9a757395..44d14c56 100644
--- a/src/commodity.cc
+++ b/src/commodity.cc
@@ -642,6 +642,17 @@ void commodity_t::parse_symbol(char *& p, string& symbol)
throw_(amount_error, _("Failed to parse commodity"));
}
+void commodity_t::print(std::ostream& out, bool elide_quotes) const
+{
+ string sym = symbol();
+ if (elide_quotes && has_flags(COMMODITY_STYLE_SEPARATED) &&
+ ! sym.empty() && sym[0] == '"' && ! std::strchr(sym.c_str(), ' ')) {
+ DEBUG("foo", "contracting " << sym << " to " << string(sym, 1, sym.length() - 2));
+ out << string(sym, 1, sym.length() - 2);
+ } else
+ out << sym;
+}
+
bool commodity_t::valid() const
{
if (symbol().empty() && this != pool().null_commodity) {
diff --git a/src/commodity.h b/src/commodity.h
index ae7d9d66..42f15f33 100644
--- a/src/commodity.h
+++ b/src/commodity.h
@@ -391,10 +391,7 @@ public:
return temp;
}
- void print(std::ostream& out) const {
- out << symbol();
- }
-
+ void print(std::ostream& out, bool elide_quotes = false) const;
bool valid() const;
struct compare_by_commodity {
diff --git a/src/report.cc b/src/report.cc
index 662db746..bed3ef5c 100644
--- a/src/report.cc
+++ b/src/report.cc
@@ -598,7 +598,7 @@ value_t report_t::fn_justify(call_scope_t& scope)
{
interactive_t args(scope, "vl&lbb");
- uint_least8_t flags(AMOUNT_PRINT_NO_FLAGS);
+ uint_least8_t flags(AMOUNT_PRINT_ELIDE_COMMODITY_QUOTES);
if (args.has(3) && args.get<bool>(3))
flags |= AMOUNT_PRINT_RIGHT_JUSTIFY;