diff options
| author | 2019-03-22 10:51:10 +0100 | |
|---|---|---|
| committer | 2019-03-22 10:51:10 +0100 | |
| commit | 9d8bb500131d3db603bacbdb91440c62f54f72de (patch) | |
| tree | b146817c18b72d5a57e6a262576e55f586b8f683 /parsingtoolbox.cpp | |
| parent | 489661ca4599a84033a57a5645e150e4129a70a0 (diff) | |
| download | OneRoll-9d8bb500131d3db603bacbdb91440c62f54f72de.tar.gz OneRoll-9d8bb500131d3db603bacbdb91440c62f54f72de.zip | |
save draft about string parsing
Diffstat (limited to 'parsingtoolbox.cpp')
| -rw-r--r-- | parsingtoolbox.cpp | 40 |
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); + + } + + } + + } +} |