use crate::unicode::ucd::property_names;
#[derive(Clone, Copy)]
pub struct PropertyName {
pub full: &'static str,
pub abbr: &'static str,
}
pub trait UnicodeProperty {
fn property_value_name(&self) -> PropertyName;
}
#[derive(Debug, PartialEq, Clone, Copy)]
#[repr(u8)]
pub enum BinaryProperty {
Y,
N,
}
impl From<bool> for BinaryProperty {
fn from(val: bool) -> Self {
match val {
true => BinaryProperty::Y,
false => BinaryProperty::N,
}
}
}
impl UnicodeProperty for BinaryProperty {
fn property_value_name(&self) -> PropertyName {
property_names::binary_property_name(*self)
}
}
#[derive(Debug, PartialEq, Clone, Copy)]
#[repr(u8)]
pub enum Gc {
Cc,
Cf,
Cn,
Co,
Cs,
Ll,
Lm,
Lo,
Lt,
Lu,
Mc,
Me,
Mn,
Nd,
Nl,
No,
Pc,
Pd,
Pe,
Pf,
Pi,
Po,
Ps,
Sc,
Sk,
Sm,
So,
Zl,
Zp,
Zs,
}
impl UnicodeProperty for Gc {
fn property_value_name(&self) -> PropertyName {
property_names::gc_name(*self)
}
}
#[derive(Debug, PartialEq, Clone, Copy)]
#[repr(u8)]
pub enum Hst {
L, LV, LVT, NA, T, V, }
impl UnicodeProperty for Hst {
fn property_value_name(&self) -> PropertyName {
property_names::hst_name(*self)
}
}
#[derive(Debug, PartialEq, Clone, Copy)]
#[repr(u8)]
pub enum Gcb {
CN, CR, EB, EBG, EM, EX, GAZ, L, LF, LV, LVT, PP, RI, SM, T, V, XX, ZWJ, }
impl UnicodeProperty for Gcb {
fn property_value_name(&self) -> PropertyName {
property_names::gcb_name(*self)
}
}
#[derive(Debug, PartialEq, Clone, Copy)]
#[repr(u8)]
pub enum Bc {
AL, AN, B, BN, CS, EN, ES, ET, FSI, L, LRE, LRI, LRO, NSM, ON, PDF, PDI, R, RLE, RLI, RLO, S, WS, }
impl UnicodeProperty for Bc {
fn property_value_name(&self) -> PropertyName {
property_names::bc_name(*self)
}
}
#[derive(Debug, PartialEq, Clone, Copy)]
#[repr(u8)]
pub enum Ccc {
NR = 0, OV = 1, HANR = 6, NK = 7, KV = 8, VR = 9, CCC10 = 10, CCC11 = 11, CCC12 = 12, CCC13 = 13, CCC14 = 14, CCC15 = 15, CCC16 = 16, CCC17 = 17, CCC18 = 18, CCC19 = 19, CCC20 = 20, CCC21 = 21, CCC22 = 22, CCC23 = 23, CCC24 = 24, CCC25 = 25, CCC26 = 26, CCC27 = 27, CCC28 = 28, CCC29 = 29, CCC30 = 30, CCC31 = 31, CCC32 = 32, CCC33 = 33, CCC34 = 34, CCC35 = 35, CCC36 = 36, CCC84 = 84, CCC91 = 91, CCC103 = 103, CCC107 = 107, CCC118 = 118, CCC122 = 122, CCC129 = 129, CCC130 = 130, CCC132 = 132, CCC133 = 133, ATBL = 200, ATB = 202, ATA = 214, ATAR = 216, BL = 218, B = 220, BR = 222, L = 224, R = 226, AL = 228, A = 230, AR = 232, DB = 233, DA = 234, IS = 240, }
impl UnicodeProperty for Ccc {
fn property_value_name(&self) -> PropertyName {
property_names::ccc_name(*self)
}
}
#[derive(Debug, PartialEq, Clone, Copy)]
#[repr(u8)]
pub enum Dt {
Can, Com, Enc, Fin, Font, Fra, Init, Iso, Med, Nar, Nb, None, Sml, Sqr, Sub, Sup, Vert, Wide, }
impl UnicodeProperty for Dt {
fn property_value_name(&self) -> PropertyName {
property_names::dt_name(*self)
}
}
#[derive(Debug, PartialEq, Clone, Copy)]
#[repr(u16)]
pub enum Blk {
Adlam,
AegeanNumbers,
Ahom,
Alchemical,
AlphabeticPf,
AnatolianHieroglyphs,
AncientGreekMusic,
AncientGreekNumbers,
AncientSymbols,
Arabic,
ArabicExtA,
ArabicExtB,
ArabicExtC,
ArabicMath,
ArabicPfA,
ArabicPfB,
ArabicSup,
Armenian,
Arrows,
Ascii,
Avestan,
Balinese,
Bamum,
BamumSup,
BassaVah,
Batak,
Bengali,
Bhaiksuki,
BlockElements,
Bopomofo,
BopomofoExt,
BoxDrawing,
Brahmi,
Braille,
Buginese,
Buhid,
ByzantineMusic,
Carian,
CaucasianAlbanian,
Chakma,
Cham,
Cherokee,
CherokeeSup,
ChessSymbols,
Chorasmian,
Cjk,
CjkCompat,
CjkCompatForms,
CjkCompatIdeographs,
CjkCompatIdeographsSup,
CjkExtA,
CjkExtB,
CjkExtC,
CjkExtD,
CjkExtE,
CjkExtF,
CjkExtG,
CjkExtH,
CjkExtI,
CjkRadicalsSup,
CjkStrokes,
CjkSymbols,
CompatJamo,
ControlPictures,
Coptic,
CopticEpactNumbers,
CountingRod,
Cuneiform,
CuneiformNumbers,
CurrencySymbols,
CypriotSyllabary,
CyproMinoan,
Cyrillic,
CyrillicExtA,
CyrillicExtB,
CyrillicExtC,
CyrillicExtD,
CyrillicSup,
Deseret,
Devanagari,
DevanagariExt,
DevanagariExtA,
Diacriticals,
DiacriticalsExt,
DiacriticalsForSymbols,
DiacriticalsSup,
Dingbats,
DivesAkuru,
Dogra,
Domino,
Duployan,
EarlyDynasticCuneiform,
EgyptianHieroglyphFormatControls,
EgyptianHieroglyphs,
EgyptianHieroglyphsExtA,
Elbasan,
Elymaic,
Emoticons,
EnclosedAlphanum,
EnclosedAlphanumSup,
EnclosedCjk,
EnclosedIdeographicSup,
Ethiopic,
EthiopicExt,
EthiopicExtA,
EthiopicExtB,
EthiopicSup,
Garay,
GeometricShapes,
GeometricShapesExt,
Georgian,
GeorgianExt,
GeorgianSup,
Glagolitic,
GlagoliticSup,
Gothic,
Grantha,
Greek,
GreekExt,
Gujarati,
GunjalaGondi,
Gurmukhi,
GurungKhema,
HalfAndFullForms,
HalfMarks,
Hangul,
HanifiRohingya,
Hanunoo,
Hatran,
Hebrew,
HighPuSurrogates,
HighSurrogates,
Hiragana,
Idc,
IdeographicSymbols,
ImperialAramaic,
IndicNumberForms,
IndicSiyaqNumbers,
InscriptionalPahlavi,
InscriptionalParthian,
IpaExt,
Jamo,
JamoExtA,
JamoExtB,
Javanese,
Kaithi,
KaktovikNumerals,
KanaExtA,
KanaExtB,
KanaSup,
Kanbun,
Kangxi,
Kannada,
Katakana,
KatakanaExt,
Kawi,
KayahLi,
Kharoshthi,
KhitanSmallScript,
Khmer,
KhmerSymbols,
Khojki,
Khudawadi,
KiratRai,
Lao,
Latin1Sup,
LatinExtA,
LatinExtAdditional,
LatinExtB,
LatinExtC,
LatinExtD,
LatinExtE,
LatinExtF,
LatinExtG,
Lepcha,
LetterlikeSymbols,
Limbu,
LinearA,
LinearBIdeograms,
LinearBSyllabary,
Lisu,
LisuSup,
LowSurrogates,
Lycian,
Lydian,
Mahajani,
Mahjong,
Makasar,
Malayalam,
Mandaic,
Manichaean,
Marchen,
MasaramGondi,
MathAlphanum,
MathOperators,
MayanNumerals,
Medefaidrin,
MeeteiMayek,
MeeteiMayekExt,
MendeKikakui,
MeroiticCursive,
MeroiticHieroglyphs,
Miao,
MiscArrows,
MiscMathSymbolsA,
MiscMathSymbolsB,
MiscPictographs,
MiscSymbols,
MiscTechnical,
Modi,
ModifierLetters,
ModifierToneLetters,
Mongolian,
MongolianSup,
Mro,
Multani,
Music,
Myanmar,
MyanmarExtA,
MyanmarExtB,
MyanmarExtC,
Nabataean,
NagMundari,
Nandinagari,
Nb,
NewTaiLue,
Newa,
Nko,
NumberForms,
Nushu,
NyiakengPuachueHmong,
Ocr,
Ogham,
OlChiki,
OlOnal,
OldHungarian,
OldItalic,
OldNorthArabian,
OldPermic,
OldPersian,
OldSogdian,
OldSouthArabian,
OldTurkic,
OldUyghur,
Oriya,
OrnamentalDingbats,
Osage,
Osmanya,
OttomanSiyaqNumbers,
PahawhHmong,
Palmyrene,
PauCinHau,
PhagsPa,
Phaistos,
Phoenician,
PhoneticExt,
PhoneticExtSup,
PlayingCards,
PsalterPahlavi,
Pua,
Punctuation,
Rejang,
Rumi,
Runic,
Samaritan,
Saurashtra,
Sharada,
Shavian,
ShorthandFormatControls,
Siddham,
Sinhala,
SinhalaArchaicNumbers,
SmallForms,
SmallKanaExt,
Sogdian,
SoraSompeng,
Soyombo,
Specials,
Sundanese,
SundaneseSup,
Sunuwar,
SupArrowsA,
SupArrowsB,
SupArrowsC,
SupMathOperators,
SupPuaA,
SupPuaB,
SupPunctuation,
SupSymbolsAndPictographs,
SuperAndSub,
SuttonSignwriting,
SylotiNagri,
SymbolsAndPictographsExtA,
SymbolsForLegacyComputing,
SymbolsForLegacyComputingSup,
Syriac,
SyriacSup,
Tagalog,
Tagbanwa,
Tags,
TaiLe,
TaiTham,
TaiViet,
TaiXuanJing,
Takri,
Tamil,
TamilSup,
Tangsa,
Tangut,
TangutComponents,
TangutSup,
Telugu,
Thaana,
Thai,
Tibetan,
Tifinagh,
Tirhuta,
Todhri,
Toto,
TransportAndMap,
TuluTigalari,
Ucas,
UcasExt,
UcasExtA,
Ugaritic,
Vai,
VedicExt,
VerticalForms,
Vithkuqi,
Vs,
VsSup,
Wancho,
WarangCiti,
Yezidi,
YiRadicals,
YiSyllables,
Yijing,
ZanabazarSquare,
ZnamennyMusic,
}
impl UnicodeProperty for Blk {
fn property_value_name(&self) -> PropertyName {
property_names::blk_name(*self)
}
}
#[derive(Debug, PartialEq, Clone, Copy)]
#[repr(u8)]
pub enum Sc {
Adlm,
Aghb,
Ahom,
Arab,
Armi,
Armn,
Avst,
Bali,
Bamu,
Bass,
Batk,
Beng,
Bhks,
Bopo,
Brah,
Brai,
Bugi,
Buhd,
Cakm,
Cans,
Cari,
Cham,
Cher,
Chrs,
Copt,
Cpmn,
Cprt,
Cyrl,
Deva,
Diak,
Dogr,
Dsrt,
Dupl,
Egyp,
Elba,
Elym,
Ethi,
Gara,
Geor,
Glag,
Gong,
Gonm,
Goth,
Gran,
Grek,
Gujr,
Gukh,
Guru,
Hang,
Hani,
Hano,
Hatr,
Hebr,
Hira,
Hluw,
Hmng,
Hmnp,
Hrkt,
Hung,
Ital,
Java,
Kali,
Kana,
Kawi,
Khar,
Khmr,
Khoj,
Kits,
Knda,
Krai,
Kthi,
Lana,
Laoo,
Latn,
Lepc,
Limb,
Lina,
Linb,
Lisu,
Lyci,
Lydi,
Mahj,
Maka,
Mand,
Mani,
Marc,
Medf,
Mend,
Merc,
Mero,
Mlym,
Modi,
Mong,
Mroo,
Mtei,
Mult,
Mymr,
Nagm,
Nand,
Narb,
Nbat,
Newa,
Nkoo,
Nshu,
Ogam,
Olck,
Onao,
Orkh,
Orya,
Osge,
Osma,
Ougr,
Palm,
Pauc,
Perm,
Phag,
Phli,
Phlp,
Phnx,
Plrd,
Prti,
Rjng,
Rohg,
Runr,
Samr,
Sarb,
Saur,
Sgnw,
Shaw,
Shrd,
Sidd,
Sind,
Sinh,
Sogd,
Sogo,
Sora,
Soyo,
Sund,
Sunu,
Sylo,
Syrc,
Tagb,
Takr,
Tale,
Talu,
Taml,
Tang,
Tavt,
Telu,
Tfng,
Tglg,
Thaa,
Thai,
Tibt,
Tirh,
Tnsa,
Todr,
Toto,
Tutg,
Ugar,
Vaii,
Vith,
Wara,
Wcho,
Xpeo,
Xsux,
Yezi,
Yiii,
Zanb,
Zinh,
Zyyy,
Zzzz,
}
impl UnicodeProperty for Sc {
fn property_value_name(&self) -> PropertyName {
property_names::sc_name(*self)
}
}
#[derive(Debug, PartialEq, Clone, Copy)]
pub enum Age {
V1_1,
V2_0,
V2_1,
V3_0,
V3_1,
V3_2,
V4_0,
V4_1,
V5_0,
V5_1,
V5_2,
V6_0,
V6_1,
V6_2,
V6_3,
V7_0,
V8_0,
V9_0,
V10_0,
V11_0,
V12_0,
V12_1,
V13_0,
V14_0,
V15_0,
V15_1,
V16_0,
NA,
}
impl UnicodeProperty for Age {
fn property_value_name(&self) -> PropertyName {
property_names::age_name(*self)
}
}
#[derive(Debug, PartialEq, Clone, Copy)]
pub enum Wb {
CR, DQ, EB, EBG, EM, EX, Extend, FO, GAZ, HL, KA, LE, LF, MB, ML, MN, NL, NU, RI, SQ, WSegSpace, XX, ZWJ, }
impl UnicodeProperty for Wb {
fn property_value_name(&self) -> PropertyName {
property_names::wb_name(*self)
}
}
#[allow(non_camel_case_types)]
#[derive(Debug, PartialEq, Clone, Copy)]
pub enum Insc {
Avagraha, Bindu, Brahmi_Joining_Number, Cantillation_Mark, Consonant, Consonant_Dead, Consonant_Final, Consonant_Head_Letter, Consonant_Initial_Postfixed, Consonant_Killer, Consonant_Medial, Consonant_Placeholder, Consonant_Preceding_Repha, Consonant_Prefixed, Consonant_Subjoined, Consonant_Succeeding_Repha, Consonant_With_Stacker, Gemination_Mark, Invisible_Stacker, Joiner, Modifying_Letter, Non_Joiner, Nukta, Number, Number_Joiner, Other, Pure_Killer, Register_Shifter, Reordering_Killer, Syllable_Modifier, Tone_Letter, Tone_Mark, Virama, Visarga, Vowel, Vowel_Dependent, Vowel_Independent, }
impl UnicodeProperty for Insc {
fn property_value_name(&self) -> PropertyName {
property_names::insc_name(*self)
}
}
#[derive(Debug, PartialEq, Clone, Copy)]
pub enum Incb {
Consonant, Extend, Linker, None, }
impl UnicodeProperty for Incb {
fn property_value_name(&self) -> PropertyName {
property_names::incb_name(*self)
}
}