mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
templatelayout.cpp: fix potential issue in preprocessTemplate()
The function preprocessTemplate(), did not account well for indexes in Grantlee variables, such as: dive.weight# (where # is the index) dive.cylinder# To solve the issue the list (QList<QPair<QString, QString> >) for variables to be replaced is populated will all possible indexes: 0 - MAX_WEIGHTSYSTEM for weights 0 - MAX_CYLINDERS for cylinders Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
abab031ed2
commit
b275e604c1
1 changed files with 10 additions and 4 deletions
|
@ -55,18 +55,24 @@ TemplateLayout::~TemplateLayout()
|
|||
*/
|
||||
static QString preprocessTemplate(const QString &in)
|
||||
{
|
||||
int i;
|
||||
QString out = in;
|
||||
|
||||
QString iStr;
|
||||
QList<QPair<QString, QString> > list;
|
||||
list << qMakePair(QString("dive.weight"), QString("dive.weights."));
|
||||
|
||||
/* populate known variables in a QPair list */
|
||||
list << qMakePair(QString("dive.weights"), QString("dive.weightList"));
|
||||
list << qMakePair(QString("dive.cylinder"), QString("dive.cylinders."));
|
||||
for (i = 0; i < MAX_WEIGHTSYSTEMS; i++)
|
||||
list << qMakePair(QString("dive.weight%1").arg(i), QString("dive.weights.%1").arg(i));
|
||||
|
||||
list << qMakePair(QString("dive.cylinders"), QString("dive.cylinderList"));
|
||||
for (i = 0; i < MAX_CYLINDERS; i++)
|
||||
list << qMakePair(QString("dive.cylinder%1").arg(i), QString("dive.cylinders.%1").arg(i));
|
||||
|
||||
/* lazy method of variable replacement without regex. the Grantlee parser
|
||||
* works with a single or no space next to the variable markers -
|
||||
* e.g. '{{ var }}' */
|
||||
for (int i = 0; i < list.length(); i++) {
|
||||
for (i = 0; i < list.length(); i++) {
|
||||
QPair<QString, QString> p = list.at(i);
|
||||
out.replace("{{ " + p.first + " }}", "{{ " + p.second + " }}");
|
||||
out.replace("{{" + p.first + "}}", "{{" + p.second + "}}");
|
||||
|
|
Loading…
Add table
Reference in a new issue