From c5ba6f01a824d4ec633930ceb8f3dceef2f2d435 Mon Sep 17 00:00:00 2001 From: Charles Dang Date: Mon, 28 May 2018 14:24:37 +1100 Subject: [PATCH] Cleaned up utils::apply_modifier a bit --- src/serialization/string_utils.cpp | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/serialization/string_utils.cpp b/src/serialization/string_utils.cpp index f8473d95a2d3..5efd33444a6c 100644 --- a/src/serialization/string_utils.cpp +++ b/src/serialization/string_utils.cpp @@ -412,18 +412,25 @@ std::pair vertical_split(const std::string& val) } // Modify a number by string representing integer difference, or optionally % -int apply_modifier( const int number, const std::string &amount, const int minimum ) { - // wassert( amount.empty() == false ); +int apply_modifier(const int number, const std::string& amount, const int minimum) +{ int value = 0; + try { value = std::stoi(amount); - } catch(const std::invalid_argument&) {} - if(amount[amount.size()-1] == '%') { + } catch(const std::invalid_argument&) { + } + + if(amount.back() == '%') { value = div100rounded(number * value); } + value += number; - if (( minimum > 0 ) && ( value < minimum )) - value = minimum; + + if(minimum > 0 && value < minimum) { + value = minimum; + } + return value; }