mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge.git
synced 2026-07-31 07:44:24 +02:00
Implement Emoji transliteration
This commit is contained in:
committed by
José Rebelo
parent
71804aeff2
commit
a00da2ee25
@@ -289,6 +289,9 @@ dependencies {
|
||||
|
||||
// Needed for Armenian transliteration
|
||||
implementation 'org.ahocorasick:ahocorasick:0.6.3'
|
||||
|
||||
// Needed for Emoji transliteration
|
||||
implementation 'net.fellbaum:jemoji:1.6.0'
|
||||
}
|
||||
|
||||
preBuild.dependsOn(":GBDaoGenerator:genSources")
|
||||
|
||||
+2
@@ -40,6 +40,7 @@ import nodomain.freeyourgadget.gadgetbridge.util.language.impl.BengaliTransliter
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.language.impl.CommonSymbolsTransliterator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.language.impl.CroatianTransliterator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.language.impl.CzechTransliterator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.language.impl.EmojiTransliterator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.language.impl.EstonianTransliterator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.language.impl.ExtendedAsciiTransliterator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.language.impl.FlattenToAsciiTransliterator;
|
||||
@@ -90,6 +91,7 @@ public class LanguageUtils {
|
||||
put("turkish", new TurkishTransliterator());
|
||||
put("ukranian", new UkranianTransliterator());
|
||||
put("armenian", new ArmenianTransliterator());
|
||||
put("emoji", new EmojiTransliterator());
|
||||
}};
|
||||
|
||||
/**
|
||||
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
package nodomain.freeyourgadget.gadgetbridge.util.language.impl;
|
||||
|
||||
import net.fellbaum.jemoji.EmojiManager;
|
||||
import java.util.Objects;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.language.Transliterator;
|
||||
|
||||
public class EmojiTransliterator implements Transliterator {
|
||||
@Override
|
||||
public String transliterate(String txt) {
|
||||
return EmojiManager.replaceAllEmojis(txt, emoji -> Objects.requireNonNullElse(emoji.getAllAliases().get(0), ""));
|
||||
}
|
||||
}
|
||||
@@ -4612,6 +4612,7 @@
|
||||
<item>@string/ukranian</item>
|
||||
<item>@string/hungarian</item>
|
||||
<item>@string/armenian</item>
|
||||
<item>@string/emoji</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="pref_transliteration_languages_values">
|
||||
@@ -4640,6 +4641,7 @@
|
||||
<item>ukranian</item>
|
||||
<item>hungarian</item>
|
||||
<item>armenian</item>
|
||||
<item>emoji</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="pref_transliteration_languages_default">
|
||||
|
||||
@@ -1265,6 +1265,7 @@
|
||||
<string name="catalan">Catalan</string>
|
||||
<string name="finnish">Finnish</string>
|
||||
<string name="bahasa_melayu">Bahasa Melayu</string>
|
||||
<string name="emoji">Emoji</string>
|
||||
<string name="FetchActivityOperation_about_to_transfer_since">About to transfer data since %1$s</string>
|
||||
<string name="waiting_for_reconnect">Waiting for reconnect</string>
|
||||
<string name="activity_prefs_about_you">About you</string>
|
||||
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
package nodomain.freeyourgadget.gadgetbridge.test;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
import org.junit.Test;
|
||||
import org.junit.Assert;
|
||||
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.language.impl.EmojiTransliterator;
|
||||
|
||||
public class EmojiTransliteratorTest extends TestCase {
|
||||
|
||||
@Test
|
||||
public void testSimpleEmoji() {
|
||||
Assert.assertEquals(":heart:", 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"));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user