summaryrefslogtreecommitdiff
path: root/src/helpers/MiscFunctions.cpp
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2022-09-28 15:32:53 +0100
committervaxerski <43317083+vaxerski@users.noreply.github.com>2022-09-28 15:32:53 +0100
commitec5ffe8839c9c993fed4c23d72077969615dd298 (patch)
treefb8cedc40639ecdc6b39a53b364aa282cb9ace73 /src/helpers/MiscFunctions.cpp
parente3b1d3c3c53c2ffad07f2ef91d5a0cf3fa452879 (diff)
rewrite isNumber
Diffstat (limited to 'src/helpers/MiscFunctions.cpp')
-rw-r--r--src/helpers/MiscFunctions.cpp20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/helpers/MiscFunctions.cpp b/src/helpers/MiscFunctions.cpp
index 67debf32..b2f3a086 100644
--- a/src/helpers/MiscFunctions.cpp
+++ b/src/helpers/MiscFunctions.cpp
@@ -170,7 +170,25 @@ float getPlusMinusKeywordResult(std::string source, float relative) {
}
bool isNumber(const std::string& str, bool allowfloat) {
- return std::ranges::all_of(str.begin(), str.end(), [&](char c) { return isdigit(c) != 0 || c == '-' || (allowfloat && c == '.'); });
+
+ std::string copy = str;
+ if (*copy.begin() == '-')
+ copy = copy.substr(1);
+
+ bool point = !allowfloat;
+ for (auto& c : copy) {
+ if (c == '.') {
+ if (point)
+ return false;
+ point = true;
+ break;
+ }
+
+ if (!std::isdigit(c))
+ return false;
+ }
+
+ return true;
}
bool isDirection(const std::string& arg) {