Move remove_emoji_modifiers to emoji.h.
This commit is contained in:
parent
3af0059b94
commit
b6bde1e4c5
@ -9,6 +9,7 @@
|
|||||||
#include "td/telegram/misc.h"
|
#include "td/telegram/misc.h"
|
||||||
#include "td/telegram/ServerMessageId.h"
|
#include "td/telegram/ServerMessageId.h"
|
||||||
|
|
||||||
|
#include "td/utils/emoji.h"
|
||||||
#include "td/utils/misc.h"
|
#include "td/utils/misc.h"
|
||||||
#include "td/utils/Slice.h"
|
#include "td/utils/Slice.h"
|
||||||
#include "td/utils/SliceBuilder.h"
|
#include "td/utils/SliceBuilder.h"
|
||||||
|
@ -7,9 +7,9 @@
|
|||||||
#include "td/telegram/DialogFilter.h"
|
#include "td/telegram/DialogFilter.h"
|
||||||
|
|
||||||
#include "td/telegram/DialogId.h"
|
#include "td/telegram/DialogId.h"
|
||||||
#include "td/telegram/misc.h"
|
|
||||||
|
|
||||||
#include "td/utils/algorithm.h"
|
#include "td/utils/algorithm.h"
|
||||||
|
#include "td/utils/emoji.h"
|
||||||
#include "td/utils/format.h"
|
#include "td/utils/format.h"
|
||||||
#include "td/utils/logging.h"
|
#include "td/utils/logging.h"
|
||||||
|
|
||||||
|
@ -74,6 +74,7 @@
|
|||||||
#include "td/actor/PromiseFuture.h"
|
#include "td/actor/PromiseFuture.h"
|
||||||
|
|
||||||
#include "td/utils/algorithm.h"
|
#include "td/utils/algorithm.h"
|
||||||
|
#include "td/utils/emoji.h"
|
||||||
#include "td/utils/format.h"
|
#include "td/utils/format.h"
|
||||||
#include "td/utils/HttpUrl.h"
|
#include "td/utils/HttpUrl.h"
|
||||||
#include "td/utils/logging.h"
|
#include "td/utils/logging.h"
|
||||||
|
@ -42,6 +42,7 @@
|
|||||||
#include "td/actor/SleepActor.h"
|
#include "td/actor/SleepActor.h"
|
||||||
|
|
||||||
#include "td/utils/algorithm.h"
|
#include "td/utils/algorithm.h"
|
||||||
|
#include "td/utils/emoji.h"
|
||||||
#include "td/utils/format.h"
|
#include "td/utils/format.h"
|
||||||
#include "td/utils/JsonBuilder.h"
|
#include "td/utils/JsonBuilder.h"
|
||||||
#include "td/utils/logging.h"
|
#include "td/utils/logging.h"
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
#include "td/telegram/misc.h"
|
#include "td/telegram/misc.h"
|
||||||
#include "td/telegram/Photo.hpp"
|
#include "td/telegram/Photo.hpp"
|
||||||
|
|
||||||
|
#include "td/utils/emoji.h"
|
||||||
#include "td/utils/logging.h"
|
#include "td/utils/logging.h"
|
||||||
#include "td/utils/misc.h"
|
#include "td/utils/misc.h"
|
||||||
#include "td/utils/Slice.h"
|
#include "td/utils/Slice.h"
|
||||||
|
@ -307,31 +307,4 @@ string get_emoji_fingerprint(uint64 num) {
|
|||||||
return emojis[static_cast<size_t>((num & 0x7FFFFFFFFFFFFFFF) % emojis.size())].str();
|
return emojis[static_cast<size_t>((num & 0x7FFFFFFFFFFFFFFF) % emojis.size())].str();
|
||||||
}
|
}
|
||||||
|
|
||||||
Slice remove_emoji_modifiers(Slice emoji) {
|
|
||||||
static const Slice modifiers[] = {u8"\uFE0E" /* variation selector-15 */,
|
|
||||||
u8"\uFE0F" /* variation selector-16 */,
|
|
||||||
u8"\u200D\u2640" /* zero width joiner + female sign */,
|
|
||||||
u8"\u200D\u2642" /* zero width joiner + male sign */,
|
|
||||||
u8"\U0001F3FB" /* emoji modifier fitzpatrick type-1-2 */,
|
|
||||||
u8"\U0001F3FC" /* emoji modifier fitzpatrick type-3 */,
|
|
||||||
u8"\U0001F3FD" /* emoji modifier fitzpatrick type-4 */,
|
|
||||||
u8"\U0001F3FE" /* emoji modifier fitzpatrick type-5 */,
|
|
||||||
u8"\U0001F3FF" /* emoji modifier fitzpatrick type-6 */};
|
|
||||||
bool found = true;
|
|
||||||
while (found) {
|
|
||||||
found = false;
|
|
||||||
for (auto &modifier : modifiers) {
|
|
||||||
if (ends_with(emoji, modifier) && emoji.size() > modifier.size()) {
|
|
||||||
emoji.remove_suffix(modifier.size());
|
|
||||||
found = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return emoji;
|
|
||||||
}
|
|
||||||
|
|
||||||
void remove_emoji_modifiers_in_place(string &emoji) {
|
|
||||||
emoji.resize(remove_emoji_modifiers(emoji).size());
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace td
|
} // namespace td
|
||||||
|
@ -35,10 +35,4 @@ int64 get_vector_hash(const vector<uint64> &numbers) TD_WARN_UNUSED_RESULT;
|
|||||||
// returns emoji corresponding to the specified number
|
// returns emoji corresponding to the specified number
|
||||||
string get_emoji_fingerprint(uint64 num);
|
string get_emoji_fingerprint(uint64 num);
|
||||||
|
|
||||||
// removes all emoji modifiers
|
|
||||||
Slice remove_emoji_modifiers(Slice emoji);
|
|
||||||
|
|
||||||
// removes all emoji modifiers in place
|
|
||||||
void remove_emoji_modifiers_in_place(string &emoji);
|
|
||||||
|
|
||||||
} // namespace td
|
} // namespace td
|
||||||
|
@ -6,6 +6,8 @@
|
|||||||
//
|
//
|
||||||
#include "td/utils/emoji.h"
|
#include "td/utils/emoji.h"
|
||||||
|
|
||||||
|
#include "td/utils/misc.h"
|
||||||
|
|
||||||
#include <unordered_set>
|
#include <unordered_set>
|
||||||
|
|
||||||
namespace td {
|
namespace td {
|
||||||
@ -837,4 +839,31 @@ bool is_emoji(Slice str) {
|
|||||||
return emojis.count(str) != 0;
|
return emojis.count(str) != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Slice remove_emoji_modifiers(Slice emoji) {
|
||||||
|
static const Slice modifiers[] = {u8"\uFE0E" /* variation selector-15 */,
|
||||||
|
u8"\uFE0F" /* variation selector-16 */,
|
||||||
|
u8"\u200D\u2640" /* zero width joiner + female sign */,
|
||||||
|
u8"\u200D\u2642" /* zero width joiner + male sign */,
|
||||||
|
u8"\U0001F3FB" /* emoji modifier fitzpatrick type-1-2 */,
|
||||||
|
u8"\U0001F3FC" /* emoji modifier fitzpatrick type-3 */,
|
||||||
|
u8"\U0001F3FD" /* emoji modifier fitzpatrick type-4 */,
|
||||||
|
u8"\U0001F3FE" /* emoji modifier fitzpatrick type-5 */,
|
||||||
|
u8"\U0001F3FF" /* emoji modifier fitzpatrick type-6 */};
|
||||||
|
bool found = true;
|
||||||
|
while (found) {
|
||||||
|
found = false;
|
||||||
|
for (auto &modifier : modifiers) {
|
||||||
|
if (ends_with(emoji, modifier) && emoji.size() > modifier.size()) {
|
||||||
|
emoji.remove_suffix(modifier.size());
|
||||||
|
found = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return emoji;
|
||||||
|
}
|
||||||
|
|
||||||
|
void remove_emoji_modifiers_in_place(string &emoji) {
|
||||||
|
emoji.resize(remove_emoji_modifiers(emoji).size());
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace td
|
} // namespace td
|
||||||
|
@ -14,4 +14,10 @@ namespace td {
|
|||||||
// checks whether the string is an emoji; variation selectors are ignored
|
// checks whether the string is an emoji; variation selectors are ignored
|
||||||
bool is_emoji(Slice str);
|
bool is_emoji(Slice str);
|
||||||
|
|
||||||
|
// removes all emoji modifiers from the end of the string
|
||||||
|
Slice remove_emoji_modifiers(Slice emoji);
|
||||||
|
|
||||||
|
// removes all emoji modifiers from the end of the string in place
|
||||||
|
void remove_emoji_modifiers_in_place(string &emoji);
|
||||||
|
|
||||||
} // namespace td
|
} // namespace td
|
||||||
|
Loading…
Reference in New Issue
Block a user