From 7703087fb4dd174759e4457dca54598ab4f38fde Mon Sep 17 00:00:00 2001 From: Rasmus Karlsson Date: Tue, 19 Jun 2018 20:04:12 +0000 Subject: [PATCH] Fix tabbing some emotes (i.e. `R-)`) --- src/providers/twitch/twitchemotes.cpp | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/src/providers/twitch/twitchemotes.cpp b/src/providers/twitch/twitchemotes.cpp index dfd68a115..b04e0c57a 100644 --- a/src/providers/twitch/twitchemotes.cpp +++ b/src/providers/twitch/twitchemotes.cpp @@ -21,6 +21,26 @@ QString getEmoteLink(const QString &id, const QString &emoteScale) return value.replace("{id}", id).replace("{scale}", emoteScale); } +QString cleanUpCode(const QString &dirtyEmoteCode) +{ + // clang-format off + static QMap emoteNameReplacements{ + {"[oO](_|\\.)[oO]", "O_o"}, {"\\>\\;\\(", ">("}, {"\\<\\;3", "<3"}, + {"\\:-?(o|O)", ":O"}, {"\\:-?(p|P)", ":P"}, {"\\:-?[\\\\/]", ":/"}, + {"\\:-?[z|Z|\\|]", ":Z"}, {"\\:-?\\(", ":("}, {"\\:-?\\)", ":)"}, + {"\\:-?D", ":D"}, {"\\;-?(p|P)", ";P"}, {"\\;-?\\)", ";)"}, + {"R-?\\)", "R)"}, {"B-?\\)", "B)"}, + }; + // clang-format on + + auto it = emoteNameReplacements.find(dirtyEmoteCode); + if (it != emoteNameReplacements.end()) { + return it.value(); + } + + return dirtyEmoteCode; +} + } // namespace // id is used for lookup @@ -95,8 +115,9 @@ void TwitchEmotes::refresh(const std::shared_ptr &user) QJsonObject emoticon = emoteValue.toObject(); QString id = QString::number(emoticon["id"].toInt()); QString code = emoticon["code"].toString(); - emoteSet.emotes.emplace_back(id, code); - emoteData.emoteCodes.push_back(code); + auto cleanCode = cleanUpCode(code); + emoteSet.emotes.emplace_back(id, cleanCode); + emoteData.emoteCodes.push_back(cleanCode); util::EmoteData emote = this->getEmoteById(id, code); emoteData.emotes.insert(code, emote);