unicode_general_category/
lib.rs1#![no_std]
12
13mod category;
14mod tables;
15pub use category::get_general_category;
16pub use tables::GeneralCategory;
17
18pub const UNICODE_VERSION: (u64, u64, u64) = (16, 0, 0);
21
22impl GeneralCategory {
23 pub fn abbreviation(&self) -> &'static str {
27 match self {
28 GeneralCategory::ClosePunctuation => "Pe",
29 GeneralCategory::ConnectorPunctuation => "Pc",
30 GeneralCategory::Control => "Cc",
31 GeneralCategory::CurrencySymbol => "Sc",
32 GeneralCategory::DashPunctuation => "Pd",
33 GeneralCategory::DecimalNumber => "Nd",
34 GeneralCategory::EnclosingMark => "Me",
35 GeneralCategory::FinalPunctuation => "Pf",
36 GeneralCategory::Format => "Cf",
37 GeneralCategory::InitialPunctuation => "Pi",
38 GeneralCategory::LetterNumber => "Nl",
39 GeneralCategory::LineSeparator => "Zl",
40 GeneralCategory::LowercaseLetter => "Ll",
41 GeneralCategory::MathSymbol => "Sm",
42 GeneralCategory::ModifierLetter => "Lm",
43 GeneralCategory::ModifierSymbol => "Sk",
44 GeneralCategory::NonspacingMark => "Mn",
45 GeneralCategory::OpenPunctuation => "Ps",
46 GeneralCategory::OtherLetter => "Lo",
47 GeneralCategory::OtherNumber => "No",
48 GeneralCategory::OtherPunctuation => "Po",
49 GeneralCategory::OtherSymbol => "So",
50 GeneralCategory::ParagraphSeparator => "Zp",
51 GeneralCategory::PrivateUse => "Co",
52 GeneralCategory::SpaceSeparator => "Zs",
53 GeneralCategory::SpacingMark => "Mc",
54 GeneralCategory::Surrogate => "Cs",
55 GeneralCategory::TitlecaseLetter => "Lt",
56 GeneralCategory::Unassigned => "Cn",
57 GeneralCategory::UppercaseLetter => "Lu",
58 }
59 }
60}
61
62#[cfg(test)]
63mod test {
64 use super::{get_general_category, GeneralCategory};
65
66 #[test]
67 fn test_get_category() {
68 assert_eq!(get_general_category('a'), GeneralCategory::LowercaseLetter);
69 assert_eq!(get_general_category('.'), GeneralCategory::OtherPunctuation);
70 assert_eq!(get_general_category('カ'), GeneralCategory::OtherLetter);
71 assert_eq!(get_general_category('🦳'), GeneralCategory::OtherSymbol);
72 }
73
74 #[test]
75 fn test_abbreviation() {
76 let cat = get_general_category('a');
77 assert_eq!(cat.abbreviation(), "Ll");
78 }
79}