iris-emoji-kotlin
iris-emoji-kotlin copied to clipboard
The missing emoji library for Kotlin ❤️
iris:emoji-kotlin
The missing emoji library for Kotlin.
iris:emoji-kotlin is a lightweight Kotlin library that helps you use Emojis in your java applications.
It is copy of my Java repo iris:emoji-java.
And it in its turn was forked from emoji-java
Reasons I forked it:
- ❗️ The most important reason I forked it was I have found how to improve its speed up to 5x times!
- My repo supports complex emojis of combination
{basic_emoji}{skin_color}?{gender}?
- It supports of bugged VK.COM web-version emojis, where ending char
\uFE0F
is absent
And of course, extend useful methods.
How to get it?
Via Direct Download:
- Use releases tab to download the jar directly.
- Download JSON-java dependency from http://mvnrepository.com/artifact/org.json/json.
How to use it?
EmojiManager
The EmojiManager
provides several static methods to search through the emojis database:
-
getForTag
returns all the emojis for a given tag -
getForAlias
returns the emoji for an alias -
getAll
returns all the emojis -
isEmoji
checks if a string is an emoji -
containsEmoji
checks if a string contains any emoji
You can also query the metadata:
-
getAllTags
returns the available tags
Or get everything:
-
getAll
returns all the emojis
Emoji model
An Emoji
is a POJO (plain old java object), which provides the following methods:
-
getUnicode
returns the unicode representation of the emoji -
getUnicode(Fitzpatrick)
returns the unicode representation of the emoji with the provided Fitzpatrick modifier. If the emoji doesn't support the Fitzpatrick modifiers, this method will throw anUnsupportedOperationException
. If the provided Fitzpatrick is null, this method will return the unicode of the emoji. -
getDescription
returns the (optional) description of the emoji -
getAliases
returns a list of aliases for this emoji -
getTags
returns a list of tags for this emoji -
getHtmlDecimal
returns an html decimal representation of the emoji -
getHtmlHexadecimal
returns an html decimal representation of the emoji -
supportsFitzpatrick
returns true if the emoji supports the Fitzpatrick modifiers, else false
Fitzpatrick modifiers
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:
EmojiParser
To unicode
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 :grinning:awesome :smiley:string 😄with a few :wink:emojis!"
val result = EmojiParser.parseToUnicode(str)
println(result)
// Prints:
// "An 😀awesome 😃string 😄with a few 😉emojis!"
To aliases
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 = EmojiParser.parseToAliases(str)
println(result)
// Prints:
// "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!"
println(EmojiParser.parseToAliases(str))
println(EmojiParser.parseToAliases(str, FitzpatrickAction.PARSE))
// Prints twice: "Here is a boy: :boy|type_6:!"
println(EmojiParser.parseToAliases(str, FitzpatrickAction.REMOVE))
// Prints: "Here is a boy: :boy:!"
println(EmojiParser.parseToAliases(str, FitzpatrickAction.IGNORE))
// Prints: "Here is a boy: :boy:🏿!"
To html
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 resultDecimal = EmojiParser.parseToHtmlDecimal(str)
println(resultDecimal)
// Prints:
// "An 😀awesome 😃string with a few 😉emojis!"
val resultHexadecimal = EmojiParser.parseToHtmlHexadecimal(str)
println(resultHexadecimal)
// Prints:
// "An 😀awesome 😃string with a few 😉emojis!"
By default, any Fitzpatrick modifier will be removed. If you want to ignore the Fitzpatrick modifiers, use EmojiParser#parseToAliases(String, FitzpatrickAction)
. Examples:
val str = "Here is a boy: \uD83D\uDC66\uD83C\uDFFF!"
println(EmojiParser.parseToHtmlDecimal(str))
println(EmojiParser.parseToHtmlDecimal(str, FitzpatrickAction.PARSE))
println(EmojiParser.parseToHtmlDecimal(str, FitzpatrickAction.REMOVE))
// Print 3 times: "Here is a boy: 👦!"
println(EmojiParser.parseToHtmlDecimal(str, FitzpatrickAction.IGNORE))
// Prints: "Here is a boy: 👦🏿!"
The same applies for the methods EmojiParser#parseToHtmlHexadecimal(String)
and EmojiParser#parseToHtmlHexadecimal(String, FitzpatrickAction)
.
Remove emojis
You can easily remove emojis from a string using one of the following methods:
-
EmojiParser#removeAllEmojis(String)
: removes all the emojis from the String -
EmojiParser#removeAllEmojisExcept(String, Collection<Emoji>)
: removes all the emojis from the String, except the ones in the Collection -
EmojiParser#removeEmojis(String, Collection<Emoji>)
: removes the emojis in the Collection from the String
For example:
val str = "An 😀awesome 😃string with a few 😉emojis!"
val collection = ArrayList<Emoji>()
collection.add(EmojiManager.getForAlias("wink")) // This is 😉
println(EmojiParser.removeAllEmojis(str))
println(EmojiParser.removeAllEmojisExcept(str, collection))
println(EmojiParser.removeEmojis(str, collection))
// Prints:
// "An awesome string with a few emojis!"
// "An awesome string with a few 😉emojis!"
// "An 😀awesome 😃string with a few emojis!"
Extract Emojis from a string
You can search a string of mixed emoji/non-emoji characters and have all of the emoji characters returned as a Collection.
-
EmojiParser#extractEmojis(String)
: returns all emojis as a Collection. This will include duplicates if emojis are present more than once.
Credits
iris-emoji-java is based on github/vdurmont/emoji-java.
And in its turn emoji-java originally used the data provided by the github/gemoji project. It is still based on it but has evolved since.
Available Emojis
See a table of the available emojis and their aliases HERE.