Scripts/Commands: New argument parsing methodology (PR #22363)

- Detect the arguments accepted by the command handler
- Tokenize out those arguments automatically and feed them to the handler
- Unmatched rest of the string can be accepted by trailing char const* or CommandArgs*

(cherry picked from commit 66a87c4642)
This commit is contained in:
Treeston
2018-09-07 20:31:04 +02:00
committed by Shauren
parent 42f366648f
commit 0c681b6509
14 changed files with 969 additions and 384 deletions

View File

@@ -22,6 +22,8 @@
#include <utf8.h>
#include <algorithm>
#include <sstream>
#include <string>
#include <cctype>
#include <cstdarg>
#include <ctime>
@@ -755,6 +757,12 @@ bool StringToBool(std::string const& str)
return lowerStr == "1" || lowerStr == "true" || lowerStr == "yes";
}
bool StringContainsStringI(std::string const& haystack, std::string const& needle)
{
return haystack.end() !=
std::search(haystack.begin(), haystack.end(), needle.begin(), needle.end(), [](char c1, char c2) { return std::toupper(c1) == std::toupper(c2); });
}
float DegToRad(float degrees)
{
return degrees * (2.f * float(M_PI) / 360.f);