diff options
Diffstat (limited to 'diceparser.cpp')
| -rw-r--r-- | diceparser.cpp | 92 |
1 files changed, 51 insertions, 41 deletions
diff --git a/diceparser.cpp b/diceparser.cpp index 802b5f2..53dc305 100644 --- a/diceparser.cpp +++ b/diceparser.cpp @@ -48,17 +48,17 @@ DiceParser::DiceParser() m_parsingToolbox = new ParsingToolBox(); m_mapDiceOp = new QMap<QString,DiceOperator>(); - m_mapDiceOp->insert("D",D); - m_mapDiceOp->insert("L",L); + m_mapDiceOp->insert(QStringLiteral("D"),D); + m_mapDiceOp->insert(QStringLiteral("L"),L); m_OptionOp = new QMap<QString,OptionOperator>(); - m_OptionOp->insert(QObject::tr("k"),Keep); - m_OptionOp->insert(QObject::tr("K"),KeepAndExplose); - m_OptionOp->insert(QObject::tr("s"),Sort); - m_OptionOp->insert(QObject::tr("c"),Count); - m_OptionOp->insert(QObject::tr("r"),Reroll); - m_OptionOp->insert(QObject::tr("e"),Explosing); - m_OptionOp->insert(QObject::tr("a"),RerollAndAdd); + m_OptionOp->insert(QStringLiteral("k"),Keep); + m_OptionOp->insert(QStringLiteral("K"),KeepAndExplose); + m_OptionOp->insert(QStringLiteral("s"),Sort); + m_OptionOp->insert(QStringLiteral("c"),Count); + m_OptionOp->insert(QStringLiteral("r"),Reroll); + m_OptionOp->insert(QStringLiteral("e"),Explosing); + m_OptionOp->insert(QStringLiteral("a"),RerollAndAdd); //m_OptionOp->insert(QObject::tr("@"),JumpBackward); @@ -69,11 +69,11 @@ DiceParser::DiceParser() m_aliasList->append(new DiceAlias("(.*)wod(.*)","\\1d10e[=10]c[>=\\2]-@c[=1]",false));*/ m_nodeActionMap = new QMap<QString,NodeAction>(); - m_nodeActionMap->insert("@",JumpBackward); + m_nodeActionMap->insert(QStringLiteral("@"),JumpBackward); m_commandList = new QStringList(); - m_commandList->append("help"); - m_commandList->append("la"); + m_commandList->append(QStringLiteral("help")); + m_commandList->append(QStringLiteral("la")); } DiceParser::~DiceParser() @@ -128,7 +128,10 @@ QString DiceParser::convertAlias(QString str) { foreach(DiceAlias* cmd, *m_aliasList) { - cmd->resolved(str); + if(cmd->isEnable()) + { + cmd->resolved(str); + } } return str; } @@ -146,7 +149,6 @@ void DiceParser::insertAlias(DiceAlias* dice, int i) bool DiceParser::parseLine(QString str) { - m_currentTreeHasSeparator = false; m_errorMap.clear(); if(NULL!=m_start) { @@ -288,8 +290,8 @@ QString DiceParser::displayResult() QTextStream stream(&str); Result* result=next->getResult(); - QString totalValue("you got %1 ;"); - QString dieValue("D%1 : {%2} "); + QString totalValue("you got %1 ;"); + QString dieValue("D%1 : {%2} "); bool scalarDone=false; while(NULL!=result) @@ -313,22 +315,22 @@ QString DiceParser::displayResult() { if(!die->hasBeenDisplayed()) { - resulStr+=QString("%1").arg(die->getValue()); + resulStr+=QStringLiteral("%1").arg(die->getValue()); die->displayed(); face = die->getFaces(); if(die->hasChildrenValue()) { - resulStr+=" ["; + resulStr+=QStringLiteral(" ["); foreach(qint64 i, die->getListValue()) { - resulStr+=QString("%1 ").arg(i); + resulStr+=QStringLiteral("%1 ").arg(i); } resulStr.remove(resulStr.size()-1,1); - resulStr+="]"; + resulStr+=QStringLiteral("]"); } - resulStr+=", "; + resulStr+=QStringLiteral(", "); } } resulStr.remove(resulStr.size()-2,2); @@ -353,7 +355,7 @@ QString DiceParser::displayResult() out << endl; - return QString("%1, you rolled:%3").arg(str.simplified()).arg(m_command) ; + return QStringLiteral("%1, you rolled:%3").arg(str.simplified()).arg(m_command) ; // qDebug() << "result count:" << resulCount; } @@ -573,8 +575,8 @@ bool DiceParser::readDice(QString& str,ExecutionNode* & node) { if(currentOperator==D) { - int num; - int end; + qint64 num; + qint64 end; if(m_parsingToolbox->readNumber(str,num)) { if(num<1) @@ -594,7 +596,7 @@ bool DiceParser::readDice(QString& str,ExecutionNode* & node) else if(m_parsingToolbox->readDiceRange(str,num,end)) { - int face = abs(num - end)+1; + qint64 face = abs(num - end)+1; DiceRollerNode* drNode = new DiceRollerNode(face,num); node = drNode; ExecutionNode* current = drNode; @@ -608,9 +610,16 @@ bool DiceParser::readDice(QString& str,ExecutionNode* & node) else if(currentOperator ==L) { QStringList list; - if(m_parsingToolbox->readList(str,list)) + QList<Range> listRange; + ParsingToolBox::LIST_OPERATOR op = m_parsingToolbox->readListOperator(str); + if(m_parsingToolbox->readList(str,list,listRange)) { ListSetRollNode* lsrNode = new ListSetRollNode(); + lsrNode->setRangeList(listRange); + if(op == ParsingToolBox::UNIQUE) + { + lsrNode->setUnique(true); + } lsrNode->setListValue(list); node = lsrNode; return true; @@ -644,14 +653,14 @@ bool DiceParser::readCommand(QString& str,ExecutionNode* & node) { if(m_commandList->contains(str)) { - if(str=="help") + if(str== QLatin1String("help")) { HelpNode* help = new HelpNode(); help->setHelpPath(m_helpPath); node = help; } - else if(str=="la") + else if(str== QLatin1String("la")) { node = new ListAliasNode(m_aliasList); } @@ -744,7 +753,6 @@ bool DiceParser::readOperator(QString& str,ExecutionNode* previous) previous->setNextNode(nodeExec); m_currentTreeHasSeparator = true; return true; - } } else @@ -801,7 +809,7 @@ bool DiceParser::readOption(QString& str,ExecutionNode* previous, bool hasDice)/ { case Keep: { - int myNumber=0; + qint64 myNumber=0; bool ascending = m_parsingToolbox->readAscending(str); if(m_parsingToolbox->readNumber(str,myNumber)) { @@ -822,7 +830,7 @@ bool DiceParser::readOption(QString& str,ExecutionNode* previous, bool hasDice)/ break; case KeepAndExplose: { - int myNumber=0; + qint64 myNumber=0; bool ascending = m_parsingToolbox->readAscending(str); if(m_parsingToolbox->readNumber(str,myNumber)) { @@ -861,7 +869,8 @@ bool DiceParser::readOption(QString& str,ExecutionNode* previous, bool hasDice)/ break; case Count: { - Validator* validator = m_parsingToolbox->readValidator(str); + //Validator* validator = m_parsingToolbox->readValidator(str); + Validator* validator = m_parsingToolbox->readCompositeValidator(str); if(NULL!=validator) { /// @todo display warning here. @@ -884,7 +893,8 @@ bool DiceParser::readOption(QString& str,ExecutionNode* previous, bool hasDice)/ case Reroll: case RerollAndAdd: { - Validator* validator = m_parsingToolbox->readValidator(str); + //Validator* validator = m_parsingToolbox->readValidator(str); + Validator* validator = m_parsingToolbox->readCompositeValidator(str); if(NULL!=validator) { /// @todo display warning here. @@ -902,14 +912,14 @@ bool DiceParser::readOption(QString& str,ExecutionNode* previous, bool hasDice)/ } else { - m_errorMap.insert(ExecutionNode::BAD_SYNTAXE,QObject::tr("Validator is missing after the %1 operator. Please, change it").arg(m_OptionOp->value(tmp)==Reroll?"r":"a")); + m_errorMap.insert(ExecutionNode::BAD_SYNTAXE,QObject::tr("Validator is missing after the %1 operator. Please, change it").arg(m_OptionOp->value(tmp)==Reroll?QStringLiteral("r"):QStringLiteral("a"))); } } break; case Explosing: { - Validator* validator = m_parsingToolbox->readValidator(str); + Validator* validator = m_parsingToolbox->readCompositeValidator(str); if(NULL!=validator) { if(!m_parsingToolbox->isValidValidator(previous,validator)) @@ -943,12 +953,12 @@ QMap<ExecutionNode::ERROR_CODE,QString> DiceParser::getErrorMap() QString DiceParser::humanReadableError() { QMapIterator<ExecutionNode::ERROR_CODE,QString> i(m_errorMap); - QString str=""; + QString str(""); while (i.hasNext()) { i.next(); str.append(i.value()); - str.append("\n"); + str.append(QStringLiteral("\n")); } ///list @@ -957,14 +967,14 @@ QString DiceParser::humanReadableError() { j.next(); str.append(j.value()); - str.append("\n"); + str.append(QStringLiteral("\n")); } return str; } bool DiceParser::readOperand(QString& str,ExecutionNode* & node) { - int myNumber=1; + qint64 myNumber=1; if(m_parsingToolbox->readNumber(str,myNumber)) { @@ -978,9 +988,9 @@ bool DiceParser::readOperand(QString& str,ExecutionNode* & node) } void DiceParser::writeDownDotTree(QString filepath) { - QString str("digraph ExecutionTree {\n"); + QString str(QStringLiteral("digraph ExecutionTree {\n")); m_start->generateDotTree(str); - str.append("}"); + str.append(QStringLiteral("}\n")); QFile file(filepath); |