mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge.git
synced 2026-07-31 07:44:24 +02:00
Always use shortest ASCII emoji variation
Signed-off-by: Alik Aslanyan <inline0@pm.me>
This commit is contained in:
committed by
José Rebelo
parent
a00da2ee25
commit
8c98a81ba5
+23
-1
@@ -1,12 +1,34 @@
|
||||
package nodomain.freeyourgadget.gadgetbridge.util.language.impl;
|
||||
|
||||
import net.fellbaum.jemoji.EmojiManager;
|
||||
|
||||
import java.util.Comparator;
|
||||
import java.util.Objects;
|
||||
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.language.Transliterator;
|
||||
|
||||
public class EmojiTransliterator implements Transliterator {
|
||||
private static boolean isAllASCII(String input) {
|
||||
boolean isASCII = true;
|
||||
for (int i = 0; i < input.length(); i++) {
|
||||
int c = input.charAt(i);
|
||||
if (c > 0x7F) {
|
||||
isASCII = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return isASCII;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String transliterate(String txt) {
|
||||
return EmojiManager.replaceAllEmojis(txt, emoji -> Objects.requireNonNullElse(emoji.getAllAliases().get(0), ""));
|
||||
return EmojiManager.replaceAllEmojis(txt, emoji -> Objects.requireNonNullElse(
|
||||
emoji.getAllAliases()
|
||||
.stream()
|
||||
.filter(Objects::nonNull)
|
||||
// This is required, because in another case emoji's will be returned
|
||||
.filter(EmojiTransliterator::isAllASCII)
|
||||
.min(Comparator.comparingInt(String::length))
|
||||
.orElse(""), ""));
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -10,12 +10,12 @@ public class EmojiTransliteratorTest extends TestCase {
|
||||
|
||||
@Test
|
||||
public void testSimpleEmoji() {
|
||||
Assert.assertEquals(":heart:", new EmojiTransliterator().transliterate("❤\uFE0F"));
|
||||
Assert.assertEquals("<3", new EmojiTransliterator().transliterate("❤\uFE0F"));
|
||||
Assert.assertEquals(":grinning:", new EmojiTransliterator().transliterate("\uD83D\uDE00"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCompoundEmoji() {
|
||||
Assert.assertEquals(":factory_worker::skin-tone-4:", new EmojiTransliterator().transliterate("\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83C\uDFED"));
|
||||
Assert.assertEquals(":factory_worker_tone4:", new EmojiTransliterator().transliterate("\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83C\uDFED"));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user