The "format" directive for commodities now disables "style observation"

This commit is contained in:
John Wiegley 2018-01-01 12:47:42 -08:00
parent a44947b870
commit e3bcb8e87e
3 changed files with 5 additions and 1 deletions

View file

@ -1090,6 +1090,8 @@ bool amount_t::parse(std::istream& in, const parse_flags_t& flags)
bool no_more_commas = false;
bool no_more_periods = false;
bool no_migrate_style
= commodity().has_flags(COMMODITY_STYLE_NO_MIGRATE);
bool decimal_comma_style
= (commodity_t::decimal_comma_by_default ||
commodity().has_flags(COMMODITY_STYLE_DECIMAL_COMMA));
@ -1173,7 +1175,7 @@ bool amount_t::parse(std::istream& in, const parse_flags_t& flags)
// is non-NULL.
new_quantity->add_flags(BIGINT_KEEP_PREC);
}
else if (commodity_) {
else if (commodity_ && ! no_migrate_style) {
commodity().add_flags(comm_flags);
if (new_quantity->prec > commodity().precision())

View file

@ -95,6 +95,7 @@ protected:
#define COMMODITY_SAW_ANN_PRICE_FLOAT 0x400
#define COMMODITY_SAW_ANN_PRICE_FIXATED 0x800
#define COMMODITY_STYLE_TIME_COLON 0x1000
#define COMMODITY_STYLE_NO_MIGRATE 0x2000
string symbol;
optional<std::size_t> graph_index;

View file

@ -1128,6 +1128,7 @@ void instance_t::commodity_format_directive(commodity_t&, string format)
trim(format);
amount_t amt;
amt.parse(format);
amt.commodity().add_flags(COMMODITY_STYLE_NO_MIGRATE);
VERIFY(amt.valid());
}