diff options
Diffstat (limited to 'diceparser.cpp')
| -rw-r--r-- | diceparser.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/diceparser.cpp b/diceparser.cpp index 5ec7122..8efa83e 100644 --- a/diceparser.cpp +++ b/diceparser.cpp @@ -39,6 +39,7 @@ #include "node/listsetrollnode.h" #include "node/mergenode.h" #include "node/numbernode.h" +#include "node/occurencecountnode.h" #include "node/paintnode.h" #include "node/parenthesesnode.h" #include "node/rerolldicenode.h" @@ -78,6 +79,7 @@ DiceParser::DiceParser() m_OptionOp->insert(QStringLiteral("u"), Split); m_OptionOp->insert(QStringLiteral("g"), Group); m_OptionOp->insert(QStringLiteral("b"), Bind); + m_OptionOp->insert(QStringLiteral("o"), Occurences); m_aliasList= new QList<DiceAlias*>(); @@ -1113,6 +1115,31 @@ bool DiceParser::readOption(QString& str, ExecutionNode* previous) //, found= true; } break; + case Occurences: + { + qint64 number= 0; + auto occNode= new OccurenceCountNode(); + if(m_parsingToolbox->readNumber(str, number)) + { + occNode->setWidth(number); + Validator* validator= m_parsingToolbox->readCompositeValidator(str); + if(validator) + { + occNode->setValidator(validator); + } + else if(m_parsingToolbox->readComma(str)) + { + if(m_parsingToolbox->readNumber(str, number)) + { + occNode->setHeight(number); + } + } + } + previous->setNextNode(occNode); + node= occNode; + found= true; + } + break; case Painter: { PainterNode* painter= new PainterNode(); |