Base: simplify UnitsSchemas management
Fixes: Maintaining schemas is difficult and error-prone - Facilitate easy schemas add, remove, change, etc. - Remove 14 files containing approx 2,190 lines of if/else code and data - Place data in one file (UnitsSchemasData.h) using a normalized structure (including special functions) - Isolate and simplify data operations (code) - Remove schemas enum to keep data independent of code - Separate responsibilities: Specifications, data, schemas, schema - Add schema data 'isDefault' - Add schema data name - Prefer algorithms to raw loops - Add schemas unit tests - Tweak quantity unit tests
This commit is contained in:
@@ -64,7 +64,7 @@ int QuantityFormat::defaultDenominator = 8; // for 1/8"
|
||||
QuantityFormat::QuantityFormat()
|
||||
: option(OmitGroupSeparator | RejectGroupSeparator)
|
||||
, format(Fixed)
|
||||
, precision(UnitsApi::getDecimals())
|
||||
, precision(static_cast<int>(UnitsApi::getDecimals()))
|
||||
, denominator(defaultDenominator)
|
||||
{}
|
||||
|
||||
@@ -256,14 +256,15 @@ std::string Quantity::getUserString(double& factor, std::string& unitString) con
|
||||
std::string
|
||||
Quantity::getUserString(UnitsSchema* schema, double& factor, std::string& unitString) const
|
||||
{
|
||||
return schema->schemaTranslate(*this, factor, unitString);
|
||||
return schema->translate(*this, factor, unitString);
|
||||
}
|
||||
|
||||
std::string Quantity::getSafeUserString() const
|
||||
{
|
||||
auto userStr = getUserString();
|
||||
if (myValue != 0.0 && parse(userStr).getValue() == 0) {
|
||||
userStr = fmt::format("{} {}", myValue, getUnit().getString());
|
||||
auto unitStr = getUnit().getString();
|
||||
userStr = fmt::format("{}{}{}", myValue, unitStr.empty() ? "" : " ", unitStr);
|
||||
}
|
||||
|
||||
return Tools::escapeQuotesFromString(userStr);
|
||||
|
||||
Reference in New Issue
Block a user