emojis
✨ Lookup emoji in O(1) time, access metadata and GitHub shortcodes, iterate over all emoji.
Features
- Lookup up emoji by Unicode value
- Lookup up emoji by GitHub shortcode (gemoji v4.1.0)
- Access emoji metadata: name, unicode version, group, skin tone, gemoji shortcodes
- Iterate over emojis in Unicode CLDR order
- Iterate over emojis in an emoji group, e.g. “Smileys & Emotion” or “Flags”
- Iterate over the skin tones for an emoji
- Select a specific skin tone for an emoji
- Uses Unicode v16.0 emoji specification
Getting started
First, add the emojis
crate to your Cargo manifest.
Simply use the get()
function to lookup emojis by Unicode value.
let rocket = get.unwrap;
Or the get_by_shortcode()
function to lookup emojis by gemoji shortcode.
let rocket = get_by_shortcode.unwrap;
These operations take Ο(1) time.
MSRV
Currently the minimum supported Rust version is 1.60 due to the dependency
on phf
. The policy of this crate is to only increase the MSRV in a
breaking release.
Breaking changes
When gemoji or the Unicode version is upgraded this is not considered a
breaking change, instead you should make sure to use
unicode_version()
to filter out newer versions.
Examples
See examples/replace.rs for an example that replaces :gemoji:
names with
real emojis in text.
|
get()
and get_by_shortcode()
return an
Emoji
struct which contains various metadata regarding the emoji.
let hand = get.unwrap;
assert_eq!;
assert_eq!;
assert_eq!;
assert_eq!;
assert_eq!;
assert_eq!;
assert_eq!;
Use skin_tones()
to iterate over the skin tones of an
emoji.
let raised_hands = get.unwrap;
let skin_tones: = raised_hands.skin_tones.unwrap.map.collect;
assert_eq!;
You can use the iter()
function to iterate over all emojis. This only
includes the default skin tone versions.
let faces: = iter.map.take.collect;
assert_eq!;
It is recommended to filter the list by the maximum Unicode version that you wish to support.
let iter = iter.filter;
Using the Group
enum you can iterate over all emojis in a group.
let fruit: = FoodAndDrink.emojis.map.take.collect;
assert_eq!;
License
This project is distributed under the terms of both the MIT license and the Apache License (Version 2.0).
See LICENSE-APACHE and LICENSE-MIT for details.