16
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-07-18 03:09:18 +02:00

added support for using multiple and/or nested include parameters in one token

This commit is contained in:
tmj-fstate
2017-10-22 19:25:10 +02:00
parent 7ad760821f
commit 35e526a454

View File

@@ -153,21 +153,18 @@ std::string cParser::readToken(bool ToLower, const char *Break)
if (mIncludeParser)
{
token = mIncludeParser->readToken(ToLower, Break);
if (!token.empty())
{
pos = token.find("(p");
// check if the token is a parameter which should be replaced with stored true value
if (pos != std::string::npos) //!=npos to znalezione
{
std::string parameter =
token.substr(pos + 2, token.find(")", pos) - pos + 2); // numer parametru
if (!token.empty()) {
while( ( pos = token.find( "(p" ) ) != std::string::npos ) {
// check if the token is a parameter which should be replaced with stored true value
auto const parameter { token.substr( pos + 2, token.find( ")", pos ) - ( pos + 2 ) ) }; // numer parametru
token.erase(pos, token.find(")", pos) - pos + 1); // najpierw usunięcie "(pN)"
size_t nr = atoi(parameter.c_str()) - 1;
if (nr < parameters.size())
{
token.insert(pos, parameters.at(nr)); // wklejenie wartości parametru
if (ToLower)
for (; pos < token.length(); ++pos)
for (; pos < parameters.at( nr ).size(); ++pos)
token[pos] = tolower(token[pos]);
}
else