diff options
| author | 2016-11-05 00:11:19 +0100 | |
|---|---|---|
| committer | 2016-11-05 00:11:19 +0100 | |
| commit | 3799c71dee9e8d73858c727873d550adc0649c64 (patch) | |
| tree | 87813e160bdbb3bad51b1a6c448bdeeaa475c2fc /diceparser.cpp | |
| parent | d5876d9b88c2f695592338335308a32e584d86a4 (diff) | |
| parent | b977d3e2a2765f5b91ac7bf5c34ea8891969cda9 (diff) | |
| download | OneRoll-3799c71dee9e8d73858c727873d550adc0649c64.tar.gz OneRoll-3799c71dee9e8d73858c727873d550adc0649c64.zip | |
add filter node
Diffstat (limited to 'diceparser.cpp')
| -rw-r--r-- | diceparser.cpp | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/diceparser.cpp b/diceparser.cpp index 809a557..5a13fbd 100644 --- a/diceparser.cpp +++ b/diceparser.cpp @@ -27,6 +27,7 @@ #include "node/startingnode.h" #include "node/scalaroperatornode.h" +#include "node/filternode.h" #include "node/numbernode.h" #include "node/keepdiceexecnode.h" #include "node/sortresult.h" @@ -67,6 +68,8 @@ DiceParser::DiceParser() m_OptionOp->insert(QStringLiteral("m"),Merge); m_OptionOp->insert(QStringLiteral("i"),ifOperator); m_OptionOp->insert(QStringLiteral("p"),Painter); + m_OptionOp->insert(QStringLiteral("f"),Filter); + m_aliasList = new QList<DiceAlias*>(); @@ -833,15 +836,9 @@ bool DiceParser::readOption(QString& str,ExecutionNode* previous)//, bool ascending = m_parsingToolbox->readAscending(str); if(m_parsingToolbox->readNumber(str,myNumber)) { - /* if(!hasDice) - { - previous = addRollDiceNode(DEFAULT_FACES_NUMBER,previous); - }*/ node = m_parsingToolbox->addSort(previous,ascending); - KeepDiceExecNode* nodeK = new KeepDiceExecNode(); nodeK->setDiceKeepNumber(myNumber); - node->setNextNode(nodeK); node = nodeK; found = true; @@ -876,6 +873,22 @@ bool DiceParser::readOption(QString& str,ExecutionNode* previous)//, } } break; + case Filter: + { + Validator* validator = m_parsingToolbox->readCompositeValidator(str); + if(NULL!=validator) + { + m_parsingToolbox->isValidValidator(previous,validator); + + FilterNode* filterNode = new FilterNode(); + filterNode->setValidator(validator); + + previous->setNextNode(filterNode); + node = filterNode; + found = true; + } + } + break; case Sort: { bool ascending = m_parsingToolbox->readAscending(str); @@ -990,6 +1003,8 @@ bool DiceParser::readOption(QString& str,ExecutionNode* previous)//, nodeif->setInstructionFalse(falseNode); nodeif->setValidator(validator); previous->setNextNode(nodeif); + node = nodeif; + found = true; } else { |