From c5ea6210eedf433ec247e0f6b439a58316f1d11a Mon Sep 17 00:00:00 2001 From: Renaud G Date: Sun, 28 Jun 2020 15:00:19 +0200 Subject: Management of string result inside string result. --- cli/main.cpp | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) (limited to 'cli') diff --git a/cli/main.cpp b/cli/main.cpp index 0b4b2bc..3de1d26 100644 --- a/cli/main.cpp +++ b/cli/main.cpp @@ -26,6 +26,7 @@ #include #include #include +#include #include #include @@ -365,19 +366,28 @@ int startDiceParsing(QStringList& cmds, QString& treeFile, bool withColor, EXPOR if(parser.hasStringResult()) { bool ok; - QStringList allStringlist= parser.getAllStringResult(ok); - QString stringResult= allStringlist.join(" ; "); + QStringList allStringlist= parser.allFirstResultAsString(ok); + + QStringList resultWithPlaceHolder; + std::for_each(allStringlist.begin(), allStringlist.end(), [&resultWithPlaceHolder](const QString& sub) { + QRegularExpression ex("%[1-3]?|\\$[1-9]+|@[1-9]+"); + if(sub.contains(ex)) + resultWithPlaceHolder.append(sub); + }); + auto stringResult + = resultWithPlaceHolder.isEmpty() ? allStringlist.join(" ; ") : resultWithPlaceHolder.join(" ; "); stringResult.replace("%1", scalarText); stringResult.replace("%2", listOfDiceResult.join(",").trimmed()); stringResult.replace("%3", lastScalarText); stringResult.replace("\\n", "\n"); - // qDebug() << "before replace variable: " << lastScalarText << scalarText << listOfDiceResult - // << listFull.size(); - stringResult= ParsingToolBox::replaceVariableToValue(stringResult, strLst); + QMap errorMap; + stringResult= ParsingToolBox::replaceVariableToValue(stringResult, allStringlist, errorMap); stringResult= ParsingToolBox::replacePlaceHolderToValue(stringResult, listFull); + error= errorMap.values().join(", "); + int i= strLst.size(); for(auto it= strLst.rbegin(); it != strLst.rend(); ++it) { -- cgit v1.2.3-70-g09d2