aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/parsingtoolbox.cpp
diff options
context:
space:
mode:
authorRenaud Guezennec <renaud.guezennec@softbankrobotics.com>2019-03-22 10:51:10 +0100
committerRenaud Guezennec <renaud.guezennec@softbankrobotics.com>2019-03-22 10:51:10 +0100
commit9d8bb500131d3db603bacbdb91440c62f54f72de (patch)
treeb146817c18b72d5a57e6a262576e55f586b8f683 /parsingtoolbox.cpp
parent489661ca4599a84033a57a5645e150e4129a70a0 (diff)
downloadOneRoll-9d8bb500131d3db603bacbdb91440c62f54f72de.tar.gz
OneRoll-9d8bb500131d3db603bacbdb91440c62f54f72de.zip
save draft about string parsing
Diffstat (limited to 'parsingtoolbox.cpp')
-rw-r--r--parsingtoolbox.cpp40
1 files changed, 40 insertions, 0 deletions
diff --git a/parsingtoolbox.cpp b/parsingtoolbox.cpp
index e85a855..a88b97b 100644
--- a/parsingtoolbox.cpp
+++ b/parsingtoolbox.cpp
@@ -794,3 +794,43 @@ bool ParsingToolBox::readComment(QString& str, QString& result, QString& comment
}
return false;
}
+
+QString ParsingToolBox::replaceVariableToValue(const QString& source, QVector<int> values)
+{
+ QString result = source;
+
+ int start = source.size();
+ do {
+ auto ref = readVariableFromString(source, start);
+ if(ref.isValid())
+ {
+ result.remove(ref.index(), ref.length());
+ result.insert(ref.index(), values[ref.valueIndex()]);
+ }
+ }while(start >= 0)
+
+ return result;
+}
+
+SubtituteInfo ParsingToolBox::readVariableFromString(const QString& source, int start)
+{
+ bool found = false;
+ for(int i = start; i >= 0 && !found; --i)
+ {
+ if(source.at(i) == "%")
+ {
+ auto rest = source.mid(i, start-i);
+ int number;
+ if(readNumber(rest, number))
+ {
+ SubtituteInfo info;
+ readSubtitutionParameters(info, rest);
+ info.setIndex(number);
+ info.setPosition(i);
+
+ }
+
+ }
+
+ }
+}