diff options
Diffstat (limited to 'src/discipline')
-rw-r--r-- | src/discipline/Sport.cpp | 27 | ||||
-rw-r--r-- | src/discipline/Sport.h | 1 |
2 files changed, 28 insertions, 0 deletions
diff --git a/src/discipline/Sport.cpp b/src/discipline/Sport.cpp index 05ba95e..42e82aa 100644 --- a/src/discipline/Sport.cpp +++ b/src/discipline/Sport.cpp @@ -2,6 +2,7 @@ #include "Sport.h" #include <set> #include <algorithm> +#include <regex> #include <QJsonObject> #include <QJsonArray> @@ -29,6 +30,32 @@ bool compareMark(const QJsonValue &left, const QJsonValue &right) { return lMark < rMark; } +/** + * @brief Sport::lastName Reduce the full name to the part that is marked in capital letters (probably last name). + * @param competitors The competitors of one category. + */ +void Sport::lastName(QJsonArray& competitors) { + for (int i = 0; i < competitors.size(); ++i) { + string fullName = competitors[i].toObject()["name"].toString().toUtf8().constData(); + + regex r("[A-Z']{2,}"); + smatch m; + + regex_search(fullName, m, r); + + string lastName = ""; + for (string s : m) { + lastName = lastName + s + " "; + } + QJsonValue nameValue = QJsonValue(QString(lastName.substr(0, lastName.size() - 1).c_str())); + + QJsonObject comp(competitors[i].toObject()); + comp.remove("name"); + comp.insert("name", nameValue); + + competitors[i] = comp; + } +} /** * @brief Sport::getCategories Reads all possible categories (also called units). diff --git a/src/discipline/Sport.h b/src/discipline/Sport.h index 3b1c7f4..78968fe 100644 --- a/src/discipline/Sport.h +++ b/src/discipline/Sport.h @@ -24,6 +24,7 @@ public: QJsonArray getCompetitorsByCategory(QString category); // filter to change the current competitor array + void lastName(QJsonArray& competitors); void filterByName(QJsonArray& competitors, QString name); void filterByCountry(QJsonArray& competitors, QString nocShort); |