KShare/src/formatter.cpp

30 lines
1.1 KiB
C++

#include "formatter.hpp"
#include <QDateTime>
#include <QStringList>
QString formatter::format(QString toFormat, QString ext, QMap<QString, QString> variables) {
QString formatted(toFormat);
QRegExp dateRegex("%(?!%)\\((.+)\\)date");
dateRegex.indexIn(toFormat);
QStringList capturedTexts(dateRegex.capturedTexts());
QDateTime date = QDateTime::currentDateTime();
for (int i = 0; i < capturedTexts.length(); i += 2) {
formatted = formatted.replace(capturedTexts.at(i), date.toString(capturedTexts.at(i + 1)));
}
QRegExp randomRegex("%(?!%)\\((.+)\\)random");
randomRegex.indexIn(toFormat);
QStringList randomTexts(randomRegex.capturedTexts());
for (int i = 0; i < randomTexts.length(); i += 2) {
QStringList list = randomTexts.at(i + 1).split('|');
formatted = formatted.replace(randomTexts.at(i), list.at(rand() % (list.length())));
}
for (QString var : variables.keys()) formatted.replace("%" + var, variables[var]);
formatted = formatted.replace(QRegExp("%(?!%)ext"), ext);
return formatted;
}