From f7ec1f44f228e0a14909f174ff410c3ee4aa00e7 Mon Sep 17 00:00:00 2001 From: ArsenArsen Date: Wed, 13 Sep 2017 01:47:41 +0200 Subject: [PATCH] Add %(a|b|c|..)random to formatter --- src/formatter.cpp | 18 +++++++++++++++--- src/formatter.hpp | 3 ++- src/uploaders/customuploader.cpp | 10 ++++++---- 3 files changed, 23 insertions(+), 8 deletions(-) diff --git a/src/formatter.cpp b/src/formatter.cpp index 9f53a16..43995e6 100644 --- a/src/formatter.cpp +++ b/src/formatter.cpp @@ -3,15 +3,27 @@ #include #include -QString formatter::format(QString toFormat, QString ext) { - QRegExp dateRegex("%\\((.+)\\)date"); +QString formatter::format(QString toFormat, QString ext, QMap variables) { + QString formatted(toFormat); + + QRegExp dateRegex("%(?!%)\\((.+)\\)date"); dateRegex.indexIn(toFormat); QStringList capturedTexts(dateRegex.capturedTexts()); - QString formatted(toFormat); 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; } diff --git a/src/formatter.hpp b/src/formatter.hpp index 797c2ec..e76bc44 100644 --- a/src/formatter.hpp +++ b/src/formatter.hpp @@ -1,11 +1,12 @@ #ifndef FORMATTER_HPP #define FORMATTER_HPP +#include #include #include namespace formatter { -QString format(QString toFormat, QString ext); +QString format(QString toFormat, QString ext, QMap variables = QMap()); } #endif // FORMATTER_HPP diff --git a/src/uploaders/customuploader.cpp b/src/uploaders/customuploader.cpp index 93020d1..d562fe3 100644 --- a/src/uploaders/customuploader.cpp +++ b/src/uploaders/customuploader.cpp @@ -9,6 +9,7 @@ #include #include #include +#include #include #include @@ -209,7 +210,8 @@ QString parsePathspec(QJsonDocument &response, QString &pathspec) { void CustomUploader::parseResult(QJsonDocument result, QByteArray data, QString returnPathspec, QString name) { if (result.isObject()) { - QString url = urlPrepend + parsePathspec(result, returnPathspec) + urlAppend; + QString url + = formatter::format(urlPrepend, "") + parsePathspec(result, returnPathspec) + formatter::format(urlAppend, ""); if (!url.isEmpty()) { QApplication::clipboard()->setText(url); notifications::notify(tr("KShare Custom Uploader ") + name, tr("Copied upload link to clipboard!")); @@ -230,9 +232,9 @@ QByteArray substituteArgs(QByteArray arr, QString format, QByteArray imgData = Q if (arr.startsWith("/") && arr.endsWith("/")) { arr = arr.mid(1, arr.length() - 2); - arr = arr.replace("%contenttype", mime.toUtf8()); - arr = arr.replace("%FORMAT", format.toUpper().toUtf8()); - arr = arr.replace("%format", format.toLower().toUtf8()); + arr = formatter::format(QString::fromUtf8(arr), format.toLower(), + { { "format", format.toLower() }, { "FORMAT", format }, { "contenttype", mime } }) + .toUtf8(); if (imgData.isNull()) return arr; return arr.replace("%imagedata", imgData);