aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/libparser
diff options
context:
space:
mode:
authorRenaud Guezennec <renaud@rolisteam.org>2025-10-26 12:30:28 +0100
committerRenaud Guezennec <renaud@rolisteam.org>2025-11-10 02:39:57 +0000
commit84c82d205fea95c5cdea1a3ba084f9fa74417649 (patch)
tree9a318619bfd9f59c99e800e6a441066345500af3 /src/libparser
parent19670fc751782d063fafd43c9be03ecc92572c6b (diff)
downloadOneRoll-84c82d205fea95c5cdea1a3ba084f9fa74417649.tar.gz
OneRoll-84c82d205fea95c5cdea1a3ba084f9fa74417649.zip
Fix count operator
Diffstat (limited to 'src/libparser')
-rw-r--r--src/libparser/include/diceparser/parsingtoolbox.h1
-rw-r--r--src/libparser/parsingtoolbox.cpp26
2 files changed, 23 insertions, 4 deletions
diff --git a/src/libparser/include/diceparser/parsingtoolbox.h b/src/libparser/include/diceparser/parsingtoolbox.h
index f34b4ac..1ea988b 100644
--- a/src/libparser/include/diceparser/parsingtoolbox.h
+++ b/src/libparser/include/diceparser/parsingtoolbox.h
@@ -233,6 +233,7 @@ public:
std::function<QString(const QString&, const QString&, bool)> colorize);
static SubtituteInfo readVariableFromString(const QString& source, int& start);
static SubtituteInfo readPlaceHolderFromString(const QString& source, int& start);
+ // static QList<SubtituteInfo> findAllPlaceHolder(const QString& source, int instructionCount);
static ExportedDiceResult finalDiceResultFromInstruction(ExecutionNode* start);
static ExportedDiceResult allDiceResultFromInstruction(ExecutionNode* start);
void addResultInJson(QJsonObject& obj, Dice::RESULT_TYPE type, const QString& key, ExecutionNode* start, bool b);
diff --git a/src/libparser/parsingtoolbox.cpp b/src/libparser/parsingtoolbox.cpp
index 2d9c08d..ec4693c 100644
--- a/src/libparser/parsingtoolbox.cpp
+++ b/src/libparser/parsingtoolbox.cpp
@@ -945,6 +945,10 @@ Dice::CONDITION_STATE ParsingToolBox::isValidValidator(ExecutionNode* previous,
if(result)
res= Dice::CONDITION_STATE::REACHABLE;
+ auto node= getNode<DiceRollerNode>(previous);
+ if(node)
+ res= val->isValidRangeSize(node->getRange());
+
return res;
}
template <typename T>
@@ -1367,10 +1371,12 @@ QString ParsingToolBox::replacePlaceHolderToValue(const QString& source, const Q
for(auto const& pair : inst2Result)
{
+ // auto placeHolders= findAllPlaceHolder(pair.second.join(","), resultList.size());
auto instId= pair.first;
auto list= pair.second.join(",");
int start= list.size() - 1;
bool valid= true;
+ bool validResult= false;
do
{
auto ref= readPlaceHolderFromString(list, start);
@@ -1379,16 +1385,20 @@ QString ParsingToolBox::replacePlaceHolderToValue(const QString& source, const Q
break;
list.remove(ref.position(), ref.length());
- auto index= ref.resultIndex() < 0 ? instId + ref.resultIndex() : ref.resultIndex() - 1;
- qDebug() << "index: " << index << instId;
+ auto index= ref.resultIndex() < 0 ? instId + ref.resultIndex() : ref.resultIndex();
+ // qDebug() << "index: " << index << instId << result << ref.position() << ref.resultIndex();
auto val= resultList[index - 1];
list.insert(ref.position(), val);
+ validResult= true;
+ } while(valid);
+
+ if(validResult)
+ {
if(result.isEmpty())
result= list;
else
result= QStringList{result, list}.join(" ,");
-
- } while(valid);
+ }
}
if(result.isEmpty())
@@ -2578,6 +2588,14 @@ SubtituteInfo ParsingToolBox::readVariableFromString(const QString& source, int&
return info;
}
+/*QList<SubtituteInfo> ParsingToolBox::findAllPlaceHolder(const QString& source, int instructionCount)
+{
+ for(int i = instructionCount - 1; i>= 0; --i)
+ {
+
+ }
+}*/
+
SubtituteInfo ParsingToolBox::readPlaceHolderFromString(const QString& source, int& start)
{
bool found= false;