aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/parsingtoolbox.cpp
diff options
context:
space:
mode:
authorRenaud G <renaud@rolisteam.org>2016-04-15 10:54:38 +0200
committerRenaud G <renaud@rolisteam.org>2016-04-15 10:54:38 +0200
commite55d89b50abd103dcc860faba2c7719064b5aa46 (patch)
treec47cf70d0d3b35c5941f80b3728dc596f572bf5a /parsingtoolbox.cpp
parent7329c3414954112da46ad1af1d900ded0363ba9c (diff)
parent711d11ae25c7aa86ae675fd849c7240c9e2cf298 (diff)
downloadOneRoll-e55d89b50abd103dcc860faba2c7719064b5aa46.tar.gz
OneRoll-e55d89b50abd103dcc860faba2c7719064b5aa46.zip
Merge branch 'master' of github.com:Rolisteam/DiceParser
Diffstat (limited to 'parsingtoolbox.cpp')
-rw-r--r--parsingtoolbox.cpp52
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;