Loading repository data…
Loading repository data…
AniTrend / repository
An android project to convert short codes, emoticons, html entities, emoticons to emoji and vice-versa
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
This project is an android port of vdurmont/emoji-java which is a lightweight java library that helps you use Emojis in your java applications re-written in Kotlin, with some extra tweaks.
This project is already being used in AniTrend and only aims to provide emojis from emojipedia
All class and function documentation on the emojify module can be found here
All supported emojis can be found here
Html.fromHtml() you can skip the conversion of HexHtml & HtmlCodes to
emoji and just pass the
returned Spanned from
whichever framework you're using. (See sample in project)Trying to get emoji support in your application in a way that is both compatible with a browser and mobile, you might even be trying to create a github client with reaction support? Then this library is for you, your backend stores is the html entities or aliases in text and this library will take care of everything for you.
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
You must use one of our artifacts kotlinx, gson or moshi for deserialization, this should match whatever library you want to use.
e.g.
dependencies {
implementation 'com.github.anitrend.android-emojify:emojify:{latest_version}'
implementation 'com.github.anitrend.android-emojify:contract:{latest_version}'
implementation 'com.github.anitrend.android-emojify:kotlinx:{latest_version}'
}
Don't know how to do that?? Take a look at the application class example
class App : Application() {
/**
* Application scope bound emojiManager, you could keep a reference to this object in a
* dependency injector framework like as a singleton in `Hilt`, `Dagger` or `Koin`
*/
internal val emojiManager: EmojiManager by lazy {
EmojiManager.create(this, KotlinxDeserializer())
}
}
class EmojiInitializer : Initializer<EmojiManager> {
private val serializer: IEmojiDeserializer = KotlinxDeserializer()
/**
* Initializes and a component given the application [Context]
*
* @param context The application context.
*/
override fun create(context: Context) = EmojiManager.create(context, serializer)
/**
* @return A list of dependencies that this [Initializer] depends on. This is
* used to determine initialization order of [Initializer]s.
*
* For e.g. if a [Initializer] `B` defines another
* [Initializer] `A` as its dependency, then `A` gets initialized before `B`.
*/
override fun dependencies() = emptyList<Class<out Initializer<*>>>()
}
class App : Application() {
/**
* Application scope bound emojiManager, you could keep a reference to this object in a
* dependency injector framework like as a singleton in `Hilt`, `Dagger` or `Koin`
*/
internal val startupEmojiManager: EmojiManager by lazy {
// should already be initialized if we haven't disabled initialization in manifest
// see: https://developer.android.com/topic/libraries/app-startup#disable-individual
AppInitializer.getInstance(this)
.initializeComponent(EmojiInitializer::class.java)
}
}
AndroidManifest.xml
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
android:exported="false"
tools:node="merge">
<meta-data
android:name="{some_package_name_of_your_choosing}.EmojiInitializer"
android:value="androidx.startup" />
</provider>
The EmojiManager provides several instance methods to search through the emojis database:
getForTag returns all the emojis for a given tag/sgetForShortCode returns the emoji for matching short code/semojiList list of all the emojisisEmoji checks if a string is an emojiYou can also query the metadata:
getAllTags returns the available tagsOr get everything:
emojiList list of all the emojisAn Emoji is a data class, which provides the following methods:
unicode the unicode representation of the emojidescription the (optional) description of the emojialiases a list of aliases for this emojitags a list of tags for this emojihtmlDec an html decimal representation of the emojihtmlHex an html decimal representation of the emojisupportsFitzpatrick true if the emoji supports the Fitzpatrick modifiers, else falsegetUnicode(fitzpatrick: Fitzpatrick?): String Returns the unicode representation of the emoji
associated with the provided Fitzpatrick modifier.Some emojis now support the use of Fitzpatrick modifiers that gives the choice between 5 shades of skin tones:
| Modifier | Type |
|---|---|
| 🏻 | type_1_2 |
| 🏼 | type_3 |
| 🏽 | type_4 |
| 🏾 | type_5 |
| 🏿 | type_6 |
We defined the format of the aliases including a Fitzpatrick modifier as:
:ALIAS|TYPE:
A few examples:
:boy|type_1_2:
:swimmer|type_4:
:santa|type_6:
Is a set of extension methods to act on EmojiManager, so given an instance of EmojiManger we can
achieve the following:
val emojiManager: EmojiManger = ...
To replace all the aliases and the html representations found in a string by their unicode,
use EmojiParser#parseToUnicode(String).
For example:
val str = "An :+1:awesome :smiley:string " + "😄with a few :wink:emojis!"
val result = emojiManager.parseToUnicode(str)
// An 😀awesome 😃string 😄with a few 😉emojis!
To replace all the emoji's unicodes found in a string by their aliases,
use EmojiParser#parseToAliases(String).
For example:
val str = "An 😀awesome 😃string with a few 😉emojis!"
val result = emojiManager.parseToAliases(str)
// "An :grinning:awesome :smiley:string with a few :wink:emojis!"
By default, the aliases will parse and include any Fitzpatrick modifier that would be provided. If
you want to remove or ignore the Fitzpatrick modifiers,
use EmojiParser#parseToAliases(String, FitzpatrickAction). Examples:
val str = "Here is a boy: \uD83D\uDC66\uD83C\uDFFF!"
emojiManager.parseToAliases(str, FitzpatrickAction.PARSE)
// Returns twice: "Here is a boy: :boy|type_6:!"
emojiManager.parseToAliases(str, FitzpatrickAction.REMOVE)
// Returns: "Here is a boy: :boy:!"
emojiManager.parseToAliases(str, FitzpatrickAction.IGNORE)
// Returns: "Here is a boy: :boy:🏿!"
To replace all the emoji's unicodes found in a string by their html representation,
use EmojiParser#parseToHtmlDecimal(String) or EmojiParser#parseToHtmlHexadecimal(String).
For example:
val str = "An 😀awesome 😃string with a few 😉emojis!"
val resultHtmlDecimal = emojiManager.parseToHtmlDecimal(str)
// Returns:
// "An 😀awesome 😃string with a few 😉emojis!"
val resultHexadecimal = emojiManager.parseToHtmlHexadecimal(str)
// Returns:
// "An 😀awesome 😃string with a few 😉emojis!"
By default, any Fitzpatrick modifier will be removed. If you want to ignore the Fitzpatrick
modifiers, use emojiManager.parseToAliases(String, FitzpatrickAction). Examples:
val str = "Here is a boy: \uD83D\uDC66\uD83C\uDFFF!"
emojiManager.parseToHtmlDecimal(str, FitzpatrickAction.PARSE)
emojiManager.parseToHtmlDecimal(str, FitzpatrickAction.REMOVE)
// Returns: "Here is a boy: 👦!"
emojiManager.parseToHtmlDecimal(str, FitzpatrickAction.IGNORE)
// Returns: "Here is a boy: 👦🏿!"
The same applies for the methods emojiManager.parseToHtmlHexadecimal(String)
and emojiManager.parseToHtmlHexadecimal(String, FitzpatrickAction).
You can easily remove emojis from a string using one of the following methods:
emojiManager.removeAllEmojis(String): removes all the emojis from the StringemojiManager.removeAllEmojisExcept(String, Collection<Emoji>): removes all the emojis from the
String, except the ones in the CollectionemojiManager.removeEmojis(String, Collection<Emoji>): removes the emojis in the Collection from
the StringFor example:
val str = "An 😀awesome 😃string with a few 😉emojis!"
val collection = ArrayList<Emoji>()
collection.add(emojiManager.getForShortCode("wink")); // This is 😉
emojiManager.removeAllEmojis(str);
emojiManager.removeAllEmojisExcept(str, collection);
emojiManager.removeEmojis(str, collection);
// Returns:
// "An awesome string with a few emojis!"
// "An awesome string with a few 😉emojis!"
// "An 😀awesome 😃string with a few emojis!"
You can search a string of mixed emoji/non-emoji characters and have all of the emoji characters returned as a Collection.
emojiManager.extractEmojis(String): returns all emojis as a Collection. This will include
duplicates if emojis are present more than once.emoji-java originally used the data provided by the [github/gemoji project](https://github.com/github/