16个版本
0.6.3 | 2024年7月24日 |
---|---|
0.6.1 | 2023年9月4日 |
0.6.0 | 2023年4月18日 |
0.5.2 | 2022年11月25日 |
0.1.1 | 2021年3月29日 |
21 在 文本处理
30,840 每月下载量
用于 42 个crate (29 个直接)
1MB
12K SLoC
emojis
✨ 在 O(1) 时间内查找表情符号,访问元数据和GitHub短码,遍历所有表情符号。
功能
- 按Unicode值查找表情符号
- 按GitHub短码查找表情符号 (gemoji v4.1.0)
- 访问表情符号元数据:名称、Unicode版本、分组、肤色、gemoji 短码
- 按Unicode CLDR顺序遍历表情符号
- 按表情符号组遍历表情符号,例如“笑脸 & 情感”或“旗帜”
- 遍历表情符号的肤色
- 为表情符号选择特定的肤色
- 使用 Unicode v15.1 表情符号规范
入门
首先,将 emojis
crate 添加到您的Cargo清单中。
cargo add emojis
只需使用 get()
函数通过Unicode值查找表情符号。
let rocket = emojis::get("🚀").unwrap();
或使用 get_by_shortcode()
函数通过 gemoji 短码查找表情符号。
let rocket = emojis::get_by_shortcode("rocket").unwrap();
这些操作需要 Ο(1) 时间。
MSRV
目前由于依赖 phf
,最低支持的Rust版本是1.60。此crate的策略是在破坏性版本中仅提高MSRV。
破坏性更改
当 gemoji 或Unicode版本升级时,这不算作破坏性更改,相反,您应该确保使用 unicode_version()
过滤掉较新版本。
示例
请参阅 examples/replace.rs 以了解将 :gemoji:
名称替换为文本中的真实表情符号的示例。
$ echo "launch :rocket:" | cargo run --example replace
launch 🚀
get()
和 get_by_shortcode()
返回一个包含关于表情符号的多种元数据的 Emoji
结构体。
let hand = emojis::get("🤌").unwrap();
assert_eq!(hand.as_str(), "\u{1f90c}");
assert_eq!(hand.as_bytes(), &[0xf0, 0x9f, 0xa4, 0x8c]);
assert_eq!(hand.name(), "pinched fingers");
assert_eq!(hand.unicode_version(), emojis::UnicodeVersion::new(13, 0));
assert_eq!(hand.group(), emojis::Group::PeopleAndBody);
assert_eq!(hand.skin_tone(), Some(emojis::SkinTone::Default));
assert_eq!(hand.shortcode(), Some("pinched_fingers"));
使用 skin_tones()
来遍历表情符号的肤色。
let raised_hands = emojis::get("🙌🏼").unwrap();
let skin_tones: Vec<_> = raised_hands.skin_tones().unwrap().map(|e| e.as_str()).collect();
assert_eq!(skin_tones, ["🙌", "🙌🏻", "🙌🏼", "🙌🏽", "🙌🏾", "🙌🏿"]);
您可以使用 iter()
函数遍历所有表情符号。这仅包括默认肤色版本。
let faces: Vec<_> = emojis::iter().map(|e| e.as_str()).take(5).collect();
assert_eq!(faces, ["😀", "😃", "😄", "😁", "😆"]);
建议根据您希望支持的最大的 Unicode 版本来过滤列表。
let iter = emojis::iter().filter(|e| {
e.unicode_version() < emojis::UnicodeVersion::new(13, 0)
});
使用 Group
枚举可以遍历组中的所有表情符号。
let fruit: Vec<_> = emojis::Group::FoodAndDrink.emojis().map(|e| e.as_str()).take(5).collect();
assert_eq!(fruit, ["🍇", "🍈", "🍉", "🍊", "🍋"]);
许可证
本项目根据 MIT 许可证和 Apache 许可证(版本 2.0)的条款分发。
有关详细信息,请参阅 LICENSE-APACHE 和 LICENSE-MIT。
依赖项
~97–265KB