pub struct Emoji {
inner: &'static emojis::Emoji,
}
impl AsRef<emojis::Emoji> for Emoji {
fn as_ref(&self) -> &'static emojis::Emoji {
self.inner
}
}
impl From<&'static emojis::Emoji> for Emoji {
fn from(value: &'static emojis::Emoji) -> Self {
Self { inner: value }
}
}
impl std::fmt::Display for Emoji {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.write_str(self.inner.as_str())
}
}
impl From<Emoji> for String {
fn from(value: Emoji) -> Self {
value.to_string()
}
}
pub fn emoji(name: impl AsRef<str> + std::fmt::Display) -> Emoji {
match emojis::get_by_shortcode(name.as_ref()).map(|x| x.into()) {
Some(o) => o,
None => {
tracing::warn!(":{name}: does not exist");
emojis::get_by_shortcode("no_entry")
.map(|x| x.into())
.unwrap()
}
}
}