16
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-07-22 22:09:19 +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) if (mIncludeParser)
{ {
token = mIncludeParser->readToken(ToLower, Break); token = mIncludeParser->readToken(ToLower, Break);
if (!token.empty()) if (!token.empty()) {
{
pos = token.find("(p"); while( ( pos = token.find( "(p" ) ) != std::string::npos ) {
// check if the token is a parameter which should be replaced with stored true value // check if the token is a parameter which should be replaced with stored true value
if (pos != std::string::npos) //!=npos to znalezione auto const parameter { token.substr( pos + 2, token.find( ")", pos ) - ( pos + 2 ) ) }; // numer parametru
{
std::string parameter =
token.substr(pos + 2, token.find(")", pos) - pos + 2); // numer parametru
token.erase(pos, token.find(")", pos) - pos + 1); // najpierw usunięcie "(pN)" token.erase(pos, token.find(")", pos) - pos + 1); // najpierw usunięcie "(pN)"
size_t nr = atoi(parameter.c_str()) - 1; size_t nr = atoi(parameter.c_str()) - 1;
if (nr < parameters.size()) if (nr < parameters.size())
{ {
token.insert(pos, parameters.at(nr)); // wklejenie wartości parametru token.insert(pos, parameters.at(nr)); // wklejenie wartości parametru
if (ToLower) if (ToLower)
for (; pos < token.length(); ++pos) for (; pos < parameters.at( nr ).size(); ++pos)
token[pos] = tolower(token[pos]); token[pos] = tolower(token[pos]);
} }
else else