diff options
| author | 2016-04-15 10:54:38 +0200 | |
|---|---|---|
| committer | 2016-04-15 10:54:38 +0200 | |
| commit | e55d89b50abd103dcc860faba2c7719064b5aa46 (patch) | |
| tree | c47cf70d0d3b35c5941f80b3728dc596f572bf5a /parsingtoolbox.cpp | |
| parent | 7329c3414954112da46ad1af1d900ded0363ba9c (diff) | |
| parent | 711d11ae25c7aa86ae675fd849c7240c9e2cf298 (diff) | |
| download | OneRoll-e55d89b50abd103dcc860faba2c7719064b5aa46.tar.gz OneRoll-e55d89b50abd103dcc860faba2c7719064b5aa46.zip | |
Merge branch 'master' of github.com:Rolisteam/DiceParser
Diffstat (limited to 'parsingtoolbox.cpp')
| -rw-r--r-- | parsingtoolbox.cpp | 52 |
1 files changed, 50 insertions, 2 deletions
diff --git a/parsingtoolbox.cpp b/parsingtoolbox.cpp index 00dfe81..7950e4d 100644 --- a/parsingtoolbox.cpp +++ b/parsingtoolbox.cpp @@ -1,6 +1,6 @@ /*************************************************************************** * Copyright (C) 2014 by Renaud Guezennec * -* http://renaudguezennec.homelinux.org/accueil,3.html * +* http://www.rolisteam.org/contact * * * * This file is part of DiceParser * * * @@ -24,6 +24,7 @@ #include "parsingtoolbox.h" #include "node/sortresult.h" +QHash<QString,QString>* ParsingToolBox::m_variableHash = NULL; ParsingToolBox::ParsingToolBox() { @@ -279,7 +280,9 @@ bool ParsingToolBox::readNumber(QString& str, qint64& myNumber) } if(number.isEmpty()) - return false; + { + return readVariable(str,myNumber); + } bool ok; myNumber = number.toLongLong(&ok); @@ -288,8 +291,43 @@ bool ParsingToolBox::readNumber(QString& str, qint64& myNumber) str=str.remove(0,number.size()); return true; } + return false; } + +bool ParsingToolBox::readVariable(QString &str, qint64 &myNumber) +{ + if(str.isEmpty()) + return false; + if(str.startsWith("${")) + { + str=str.remove(0,2); + } + QString key; + int post = str.indexOf('}'); + key = str.left(post); + + if(NULL!=m_variableHash) + { + if(m_variableHash->contains(key)) + { + QString value = m_variableHash->value(key); + bool ok; + int valueInt = value.toInt(&ok); + if(ok) + { + myNumber = valueInt; + str=str.remove(0,post+1); + return true; + } + + } + } + + + return false; + +} bool ParsingToolBox::readOpenParentheses(QString& str) { if(str.startsWith("(")) @@ -436,6 +474,16 @@ void ParsingToolBox::readPainterParameter(PainterNode* painter,QString& str) } } +QHash<QString, QString> *ParsingToolBox::getVariableHash() +{ + return m_variableHash; +} + +void ParsingToolBox::setVariableHash(QHash<QString, QString> *variableHash) +{ + m_variableHash = variableHash; +} + void ParsingToolBox::readProbability(QStringList& str,QList<Range>& ranges) { quint64 totalDistance=0; |