6 个版本 (3 个破坏性更新)
0.4.1 | 2022 年 10 月 24 日 |
---|---|
0.4.0 | 2021 年 4 月 6 日 |
0.3.0 | 2021 年 4 月 1 日 |
0.2.1 | 2021 年 3 月 17 日 |
0.1.0 | 2020 年 11 月 27 日 |
#207 in 文本处理
275 每月下载量
在 13 个 crate 中使用 (3 个直接使用)
2.5MB
32K SLoC
emojic 😀 🙂 😇
为你的 Rust 字符串提供表情符号常量。此 crate 受 Go 库 emoji 启发,由 @enescakir 编写。
请注意,此文件使用实际的 Unicode 表情符号给出结果的视觉示例。然而,根据字体和设备上的支持情况,可能不是所有表情符号都能正确显示,尤其是较新的表情符号。
📦 Cargo.toml
[dependencies]
emojic = "0.4"
🔧 示例
use emojic::Gender;
use emojic::Pair;
use emojic::Tone;
use emojic::flat::*;
println!("Hello {}", WAVING_HAND);
println!(
"I'm {} from {}",
TECHNOLOGIST.gender(Gender::Male),
FLAG_TURKEY
);
println!(
"Different skin tones default {} light {} dark {}",
THUMBS_UP,
OK_HAND.tone(Tone::Light),
CALL_ME_HAND.tone(Tone::Dark)
);
println!(
"Multiple skin tones: default: {}, same: {} different: {}",
PERSON_HOLDING_HANDS,
PERSON_HOLDING_HANDS.tone(Tone::Medium),
PERSON_HOLDING_HANDS.tone((Tone::Light, Tone::Dark))
);
println!(
"Different sexes: default: {} male: {}, female: {}",
GENIE,
GENIE.gender(Gender::Male),
GENIE.gender(Gender::Female),
);
println!(
"Mixing attributes: men & light: {} and women & drak: {}",
PERSON_TIPPING_HAND.gender(Gender::Male).tone(Tone::Light),
PERSON_TIPPING_HAND.gender(Gender::Female).tone(Tone::Dark),
);
🖨️ 输出
Hello 👋
I'm 👨💻 from 🇹🇷
Different skin tones default 👍 light 👌🏻 dark 🤙🏿
Multiple skin tones: default: 🧑🤝🧑, same: 🧑🏽🤝🧑🏽 different: 🧑🏻🤝🧑🏿
Different sexes: default: 🧞 male: 🧞♂️, female: 🧞♀️
Mixing attributes: men & light: 💁🏻♂️ and women & drak: 💁🏿♀️
此 crate 包含基于 完整表情符号列表 v13.1 的表情符号常量。包括其分类
assert_eq!(
emojic::grouped::people_and_body::hands::OPEN_HANDS, //🤲
emojic::flat::OPEN_HANDS, //🤲
);
此外,它还提供迭代器以列出每个组和子组的所有表情符号
// Iterates all hand emoji: 👏, 🙏, 🤝, 👐, 🤲, 🙌
emojic::grouped::people_and_body::hands::base_emojis()
另外,它还具有生成(任意)国家和地区标志的功能。
// 🏴 ∩ 🏴 ⊂ 🇬🇧 ⊄ 🇪🇺
println!("{} ∩ {} ⊂ {} ⊄ {}",
regional_flag("GB-ENG"),
regional_flag("GB-SCT"),
country_flag("GB"),
country_flag("EU"),
)
最后,此 crate 允许通过 parse_alias
解析 github/gemoji 列表中的表情符号别名。
parse_alias(":+1:") // 👍
parse_alias(":100:") // 💯
parse_alias(":woman_astronaut:") // 👩🚀
它还具有通过 parse_text
解析和替换这些表情符号别名的实用工具。
// a 🥪 consists of 🍞, 🥓, and some 🧀
parse_text("a :sandwich: consists of :bread:, :bacon:, and some :cheese:")
🔭 示例
有关更多示例,请参阅 示例文件夹。
🧩 Crate 功能
默认情况下,此 crate 是 no_std
,这意味着它应在 WASM 和其他受限平台上可用。但是,一些附加功能需要 alloc
crate(通常是 std
的一部分),因此默认启用。
-
default
: (隐含alloc
)
如果不选择退出,则自动启用[dependencies.emojic] version = "0.4" default-features = false
-
alloc
: (隐含hashbrown
和lazy_static
)
需要全局分配器,启用一些附加功能:parse_text
函数和临时标志函数 (country_flag
®ional_flag
)(标志常量不受影响)。请注意,默认情况下,
lazy_static
会自动引入std
以使用互斥锁进行等待。如果你已经有了std
,这是好的;如果没有,这就不太好了。然而,另一种选择是指导lazy_static
使用自旋锁。但是,由于 Cargo 中的 crate-features 是统一的,对于所有默认需要std
的用户来说,这可能会产生不良影响。相反,如果你想使用这个alloc
功能,但你没有std
(例如在你的二进制 crate 中),你可以简单地自己添加lazy_static
,并使其使用自旋锁,这将适用于全局。例如,添加到你的Cargo.toml
[dependencies.lazy_static] version = "1.4" features = ["spin_no_std"]
另请参阅:https://github.com/rust-lang-nursery/lazy-static.rs/issues/150
📝 许可证
本作品受 MIT 许可证(LICENSE)许可。
🚧 贡献
除非你明确声明,否则,根据 MIT 许可证定义,你故意提交给本项目包括在内的任何贡献,都将按照上述方式许可,不附加任何额外的条款或条件。