use once_cell::sync::Lazy;
use serde_json::Value;
use std::collections::HashSet;
static EMOJI_SET: Lazy<HashSet<&'static str>> = Lazy::new(|| {
let mut set: HashSet<&'static str> = HashSet::new();
let base_json = include_str!("../assets/emoji_base.json");
let zwj_json = include_str!("../assets/emoji_zwj.json");
let base_map: Value = serde_json::from_str(base_json).expect("Invalid emoji_base.json");
let zwj_map: Value = serde_json::from_str(zwj_json).expect("Invalid emoji_zwj.json");
for (k, _) in base_map.as_object().unwrap() {
set.insert(Box::leak(k.clone().into_boxed_str()));
}
for (k, _) in zwj_map.as_object().unwrap() {
set.insert(Box::leak(k.clone().into_boxed_str()));
}
set
});
pub(crate) fn is_emoji(grapheme: &str) -> bool {
EMOJI_SET.contains(grapheme)
}