aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/cli
diff options
context:
space:
mode:
authorRenaud G <renaud@rolisteam.org>2020-06-28 15:00:19 +0200
committerRenaud G <renaud@rolisteam.org>2020-06-28 15:00:19 +0200
commitc5ea6210eedf433ec247e0f6b439a58316f1d11a (patch)
treec54d47a58a5aa428e64283f65ad13fcee3554e35 /cli
parent6ca0d07b82c79eeb6b48463e1576ec4aec41ac31 (diff)
downloadOneRoll-c5ea6210eedf433ec247e0f6b439a58316f1d11a.tar.gz
OneRoll-c5ea6210eedf433ec247e0f6b439a58316f1d11a.zip
Management of string result inside string result.
Diffstat (limited to 'cli')
-rw-r--r--cli/main.cpp20
1 files changed, 15 insertions, 5 deletions
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 <QJsonArray>
#include <QJsonDocument>
#include <QJsonObject>
+#include <QRegularExpression>
#include <QStringList>
#include <QTextStream>
@@ -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<Dice::ERROR_CODE, QString> 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)
{