Experimental emoji sets implemented

Fixes #376
This commit is contained in:
Rasmus Karlsson
2018-06-06 01:29:43 +02:00
parent 30c117f129
commit 334f778f42
9 changed files with 257 additions and 53 deletions
+18 -5
View File
@@ -17,25 +17,38 @@ struct EmojiData {
// actual byte-representation of the emoji (i.e. \154075\156150 which is :male:)
QString value;
// what's used in the emoji-one url
QString code;
// i.e. 204e-50a2
QString unifiedCode;
QString nonQualifiedCode;
// i.e. thinking
QString shortCode;
std::set<QString> capabilities;
std::vector<EmojiData> variations;
util::EmoteData emoteData;
};
using EmojiMap = util::ConcurrentMap<QString, EmojiData>;
using EmojiMap = util::ConcurrentMap<QString, std::shared_ptr<EmojiData>>;
class Emojis
{
public:
void initialize();
EmojiMap emojis;
std::vector<std::string> shortCodes;
void load();
private:
void loadEmojis();
void loadEmojiOne2Capabilities();
public:
QString replaceShortCodes(const QString &text);
void parse(std::vector<std::tuple<util::EmoteData, QString>> &parsedWords, const QString &text);
@@ -45,10 +58,10 @@ private:
QRegularExpression findShortCodesRegex{":([-+\\w]+):"};
// shortCodeToEmoji maps strings like "sunglasses" to its emoji
QMap<QString, EmojiData> emojiShortCodeToEmoji;
QMap<QString, std::shared_ptr<EmojiData>> emojiShortCodeToEmoji;
// Maps the first character of the emoji unicode string to a vector of possible emojis
QMap<QChar, QVector<EmojiData>> emojiFirstByte;
QMap<QChar, QVector<std::shared_ptr<EmojiData>>> emojiFirstByte;
};
} // namespace emoji