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 文本处理

Download history 86/week @ 2024-03-11 65/week @ 2024-03-18 71/week @ 2024-03-25 102/week @ 2024-04-01 73/week @ 2024-04-08 76/week @ 2024-04-15 79/week @ 2024-04-22 73/week @ 2024-04-29 66/week @ 2024-05-06 76/week @ 2024-05-13 50/week @ 2024-05-20 53/week @ 2024-05-27 64/week @ 2024-06-03 73/week @ 2024-06-10 65/week @ 2024-06-17 71/week @ 2024-06-24

275 每月下载量
13 个 crate 中使用 (3 个直接使用)

MIT 许可证

2.5MB
32K SLoC

emojic 😀 🙂 😇

Crates.io Documentation License

为你的 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: (隐含 hashbrownlazy_static)
    需要全局分配器,启用一些附加功能: parse_text 函数和临时标志函数 (country_flag & regional_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 许可证定义,你故意提交给本项目包括在内的任何贡献,都将按照上述方式许可,不附加任何额外的条款或条件。

依赖关系