File indexing completed on 2023-05-30 10:45:23
0001 /* 0002 SPDX-FileCopyrightText: 2008-2010 Peter Hedlund <peter.hedlund@kdemail.net> 0003 SPDX-License-Identifier: GPL-2.0-or-later 0004 */ 0005 0006 #include "blankanswer.h" 0007 0008 #include <QRegularExpression> 0009 #include <QStringList> 0010 0011 namespace BlankAnswer 0012 { 0013 0014 BlankResult blankAnswer(const QString &input) 0015 { 0016 BlankResult result; 0017 QRegularExpression rx(QStringLiteral("\\[(.*?)\\]")); 0018 0019 QRegularExpressionMatchIterator matchIt = rx.globalMatch(input); 0020 0021 // When there is no blank return an empty result 0022 if (!matchIt.hasNext()) { 0023 return result; 0024 } 0025 0026 result.blankedAnswer = input; 0027 result.blankedAnswer.replace(rx, QStringLiteral("..........")); 0028 0029 QStringList answerParts; 0030 0031 while (matchIt.hasNext()) { 0032 QRegularExpressionMatch match = matchIt.next(); 0033 answerParts << match.captured(1); 0034 } 0035 0036 result.correctAnswer = answerParts.join(QLatin1String("; ")); 0037 0038 return result; 0039 } 0040 0041 QString yourAnswerResult(const QString &givenAnswer, const QString &blankedAnswer) 0042 { 0043 QString result = givenAnswer; 0044 0045 if (!blankedAnswer.isEmpty()) { 0046 result.clear(); 0047 QStringList ls; 0048 0049 if (givenAnswer.indexOf(';') > 0) 0050 ls = givenAnswer.split(';'); 0051 else 0052 ls.append(givenAnswer); 0053 0054 result = QString(blankedAnswer).replace(QLatin1String(".........."), QLatin1String("<u></u>")); 0055 0056 int offset = 0, counter = 0; 0057 while (offset >= 0 && counter < ls.size()) { 0058 offset = result.indexOf(QStringLiteral("<u>"), offset); 0059 if (offset >= 0) { 0060 result.insert(offset + 3, ls[counter]); 0061 offset++; 0062 counter++; 0063 } 0064 } 0065 result.append("</qt>"); 0066 result.prepend("<qt>"); 0067 } 0068 0069 return result; 0070 } 0071 0072 }; // namespace BlankAnswer