Coverage Report

Created: 2025-11-16 06:27

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/rust/registry/src/index.crates.io-1949cf8c6b5b557f/pest-2.8.3/src/unicode/mod.rs
Line
Count
Source
1
//! Character inclusion in binary or General_Category value Unicode sets.
2
//!
3
//! We rely on dead code elimination to remove the tables that aren't needed.
4
5
#![allow(bad_style)]
6
#![allow(clippy::all)]
7
8
use alloc::boxed::Box;
9
10
macro_rules! property_functions {
11
    ($module:ident, $property_names:ident, [$(
12
        $prop:ident,
13
    )*]) => {
14
        #[allow(unused)]
15
        mod $module;
16
        // unicode::ALPHABETIC('a')
17
0
        $(pub fn $prop(c: char) -> bool {
18
0
            self::$module::$prop.contains_char(c)
19
0
        })*
Unexecuted instantiation: pest::unicode::ALPHABETIC
Unexecuted instantiation: pest::unicode::CHORASMIAN
Unexecuted instantiation: pest::unicode::DEPRECATED
Unexecuted instantiation: pest::unicode::DEVANAGARI
Unexecuted instantiation: pest::unicode::GLAGOLITIC
Unexecuted instantiation: pest::unicode::KHAROSHTHI
Unexecuted instantiation: pest::unicode::MANICHAEAN
Unexecuted instantiation: pest::unicode::OLD_ITALIC
Unexecuted instantiation: pest::unicode::OLD_PERMIC
Unexecuted instantiation: pest::unicode::OLD_TURKIC
Unexecuted instantiation: pest::unicode::OLD_UYGHUR
Unexecuted instantiation: pest::unicode::OTHER_MATH
Unexecuted instantiation: pest::unicode::PHOENICIAN
Unexecuted instantiation: pest::unicode::SAURASHTRA
Unexecuted instantiation: pest::unicode::UNASSIGNED
Unexecuted instantiation: pest::unicode::DIVES_AKURU
Unexecuted instantiation: pest::unicode::IDEOGRAPHIC
Unexecuted instantiation: pest::unicode::ID_CONTINUE
Unexecuted instantiation: pest::unicode::MATH_SYMBOL
Unexecuted instantiation: pest::unicode::MEDEFAIDRIN
Unexecuted instantiation: pest::unicode::NAG_MUNDARI
Unexecuted instantiation: pest::unicode::NANDINAGARI
Unexecuted instantiation: pest::unicode::NEW_TAI_LUE
Unexecuted instantiation: pest::unicode::OLD_PERSIAN
Unexecuted instantiation: pest::unicode::OLD_SOGDIAN
Unexecuted instantiation: pest::unicode::PAU_CIN_HAU
Unexecuted instantiation: pest::unicode::PRIVATE_USE
Unexecuted instantiation: pest::unicode::PUNCTUATION
Unexecuted instantiation: pest::unicode::SIGNWRITING
Unexecuted instantiation: pest::unicode::SOFT_DOTTED
Unexecuted instantiation: pest::unicode::WARANG_CITI
Unexecuted instantiation: pest::unicode::WHITE_SPACE
Unexecuted instantiation: pest::unicode::BIDI_CONTROL
Unexecuted instantiation: pest::unicode::CASED_LETTER
Unexecuted instantiation: pest::unicode::CYPRO_MINOAN
Unexecuted instantiation: pest::unicode::JOIN_CONTROL
Unexecuted instantiation: pest::unicode::MEETEI_MAYEK
Unexecuted instantiation: pest::unicode::OTHER_LETTER
Unexecuted instantiation: pest::unicode::OTHER_NUMBER
Unexecuted instantiation: pest::unicode::OTHER_SYMBOL
Unexecuted instantiation: pest::unicode::PAHAWH_HMONG
Unexecuted instantiation: pest::unicode::SORA_SOMPENG
Unexecuted instantiation: pest::unicode::SPACING_MARK
Unexecuted instantiation: pest::unicode::SYLOTI_NAGRI
Unexecuted instantiation: pest::unicode::XID_CONTINUE
Unexecuted instantiation: pest::unicode::GRAPHEME_BASE
Unexecuted instantiation: pest::unicode::GRAPHEME_LINK
Unexecuted instantiation: pest::unicode::GUNJALA_GONDI
Unexecuted instantiation: pest::unicode::LETTER_NUMBER
Unexecuted instantiation: pest::unicode::MASARAM_GONDI
Unexecuted instantiation: pest::unicode::MENDE_KIKAKUI
Unexecuted instantiation: pest::unicode::OLD_HUNGARIAN
Unexecuted instantiation: pest::unicode::CASE_IGNORABLE
Unexecuted instantiation: pest::unicode::DECIMAL_NUMBER
Unexecuted instantiation: pest::unicode::EMOJI_MODIFIER
Unexecuted instantiation: pest::unicode::ENCLOSING_MARK
Unexecuted instantiation: pest::unicode::LINE_SEPARATOR
Unexecuted instantiation: pest::unicode::OTHER_ID_START
Unexecuted instantiation: pest::unicode::PATTERN_SYNTAX
Unexecuted instantiation: pest::unicode::QUOTATION_MARK
Unexecuted instantiation: pest::unicode::CURRENCY_SYMBOL
Unexecuted instantiation: pest::unicode::EMOJI_COMPONENT
Unexecuted instantiation: pest::unicode::GRAPHEME_EXTEND
Unexecuted instantiation: pest::unicode::HANIFI_ROHINGYA
Unexecuted instantiation: pest::unicode::MODIFIER_LETTER
Unexecuted instantiation: pest::unicode::MODIFIER_SYMBOL
Unexecuted instantiation: pest::unicode::NONSPACING_MARK
Unexecuted instantiation: pest::unicode::OTHER_LOWERCASE
Unexecuted instantiation: pest::unicode::OTHER_UPPERCASE
Unexecuted instantiation: pest::unicode::PSALTER_PAHLAVI
Unexecuted instantiation: pest::unicode::SPACE_SEPARATOR
Unexecuted instantiation: pest::unicode::DASH_PUNCTUATION
Unexecuted instantiation: pest::unicode::IMPERIAL_ARAMAIC
Unexecuted instantiation: pest::unicode::LOWERCASE_LETTER
Unexecuted instantiation: pest::unicode::MEROITIC_CURSIVE
Unexecuted instantiation: pest::unicode::OPEN_PUNCTUATION
Unexecuted instantiation: pest::unicode::OTHER_ALPHABETIC
Unexecuted instantiation: pest::unicode::TITLECASE_LETTER
Unexecuted instantiation: pest::unicode::UPPERCASE_LETTER
Unexecuted instantiation: pest::unicode::ZANABAZAR_SQUARE
Unexecuted instantiation: pest::unicode::CLOSE_PUNCTUATION
Unexecuted instantiation: pest::unicode::FINAL_PUNCTUATION
Unexecuted instantiation: pest::unicode::OLD_NORTH_ARABIAN
Unexecuted instantiation: pest::unicode::OLD_SOUTH_ARABIAN
Unexecuted instantiation: pest::unicode::OTHER_ID_CONTINUE
Unexecuted instantiation: pest::unicode::OTHER_PUNCTUATION
Unexecuted instantiation: pest::unicode::SENTENCE_TERMINAL
Unexecuted instantiation: pest::unicode::UNIFIED_IDEOGRAPH
Unexecuted instantiation: pest::unicode::CAUCASIAN_ALBANIAN
Unexecuted instantiation: pest::unicode::EMOJI_PRESENTATION
Unexecuted instantiation: pest::unicode::REGIONAL_INDICATOR
Unexecuted instantiation: pest::unicode::VARIATION_SELECTOR
Unexecuted instantiation: pest::unicode::CANADIAN_ABORIGINAL
Unexecuted instantiation: pest::unicode::EMOJI_MODIFIER_BASE
Unexecuted instantiation: pest::unicode::IDS_BINARY_OPERATOR
Unexecuted instantiation: pest::unicode::INITIAL_PUNCTUATION
Unexecuted instantiation: pest::unicode::KHITAN_SMALL_SCRIPT
Unexecuted instantiation: pest::unicode::PARAGRAPH_SEPARATOR
Unexecuted instantiation: pest::unicode::PATTERN_WHITE_SPACE
Unexecuted instantiation: pest::unicode::EGYPTIAN_HIEROGLYPHS
Unexecuted instantiation: pest::unicode::IDS_TRINARY_OPERATOR
Unexecuted instantiation: pest::unicode::MEROITIC_HIEROGLYPHS
Unexecuted instantiation: pest::unicode::TERMINAL_PUNCTUATION
Unexecuted instantiation: pest::unicode::ANATOLIAN_HIEROGLYPHS
Unexecuted instantiation: pest::unicode::CONNECTOR_PUNCTUATION
Unexecuted instantiation: pest::unicode::EXTENDED_PICTOGRAPHIC
Unexecuted instantiation: pest::unicode::INSCRIPTIONAL_PAHLAVI
Unexecuted instantiation: pest::unicode::OTHER_GRAPHEME_EXTEND
Unexecuted instantiation: pest::unicode::INSCRIPTIONAL_PARTHIAN
Unexecuted instantiation: pest::unicode::NYIAKENG_PUACHUE_HMONG
Unexecuted instantiation: pest::unicode::CHANGES_WHEN_CASEFOLDED
Unexecuted instantiation: pest::unicode::CHANGES_WHEN_CASEMAPPED
Unexecuted instantiation: pest::unicode::CHANGES_WHEN_LOWERCASED
Unexecuted instantiation: pest::unicode::CHANGES_WHEN_TITLECASED
Unexecuted instantiation: pest::unicode::CHANGES_WHEN_UPPERCASED
Unexecuted instantiation: pest::unicode::LOGICAL_ORDER_EXCEPTION
Unexecuted instantiation: pest::unicode::NONCHARACTER_CODE_POINT
Unexecuted instantiation: pest::unicode::DEFAULT_IGNORABLE_CODE_POINT
Unexecuted instantiation: pest::unicode::PREPENDED_CONCATENATION_MARK
Unexecuted instantiation: pest::unicode::YI
Unexecuted instantiation: pest::unicode::OTHER_DEFAULT_IGNORABLE_CODE_POINT
Unexecuted instantiation: pest::unicode::HAN
Unexecuted instantiation: pest::unicode::LAO
Unexecuted instantiation: pest::unicode::MRO
Unexecuted instantiation: pest::unicode::NKO
Unexecuted instantiation: pest::unicode::VAI
Unexecuted instantiation: pest::unicode::AHOM
Unexecuted instantiation: pest::unicode::CHAM
Unexecuted instantiation: pest::unicode::DASH
Unexecuted instantiation: pest::unicode::KAWI
Unexecuted instantiation: pest::unicode::LISU
Unexecuted instantiation: pest::unicode::MARK
Unexecuted instantiation: pest::unicode::MATH
Unexecuted instantiation: pest::unicode::MIAO
Unexecuted instantiation: pest::unicode::MODI
Unexecuted instantiation: pest::unicode::NEWA
Unexecuted instantiation: pest::unicode::THAI
Unexecuted instantiation: pest::unicode::TOTO
Unexecuted instantiation: pest::unicode::ADLAM
Unexecuted instantiation: pest::unicode::BAMUM
Unexecuted instantiation: pest::unicode::BATAK
Unexecuted instantiation: pest::unicode::BUHID
Unexecuted instantiation: pest::unicode::CASED
Unexecuted instantiation: pest::unicode::DOGRA
Unexecuted instantiation: pest::unicode::EMOJI
Unexecuted instantiation: pest::unicode::GREEK
Unexecuted instantiation: pest::unicode::KHMER
Unexecuted instantiation: pest::unicode::LATIN
Unexecuted instantiation: pest::unicode::LIMBU
Unexecuted instantiation: pest::unicode::NUSHU
Unexecuted instantiation: pest::unicode::OGHAM
Unexecuted instantiation: pest::unicode::ORIYA
Unexecuted instantiation: pest::unicode::OSAGE
Unexecuted instantiation: pest::unicode::OTHER
Unexecuted instantiation: pest::unicode::RUNIC
Unexecuted instantiation: pest::unicode::TAKRI
Unexecuted instantiation: pest::unicode::TAMIL
Unexecuted instantiation: pest::unicode::ARABIC
Unexecuted instantiation: pest::unicode::BRAHMI
Unexecuted instantiation: pest::unicode::CARIAN
Unexecuted instantiation: pest::unicode::CHAKMA
Unexecuted instantiation: pest::unicode::COMMON
Unexecuted instantiation: pest::unicode::COPTIC
Unexecuted instantiation: pest::unicode::FORMAT
Unexecuted instantiation: pest::unicode::GOTHIC
Unexecuted instantiation: pest::unicode::HANGUL
Unexecuted instantiation: pest::unicode::HATRAN
Unexecuted instantiation: pest::unicode::HEBREW
Unexecuted instantiation: pest::unicode::HYPHEN
Unexecuted instantiation: pest::unicode::KAITHI
Unexecuted instantiation: pest::unicode::KHOJKI
Unexecuted instantiation: pest::unicode::LEPCHA
Unexecuted instantiation: pest::unicode::LETTER
Unexecuted instantiation: pest::unicode::LYCIAN
Unexecuted instantiation: pest::unicode::LYDIAN
Unexecuted instantiation: pest::unicode::NUMBER
Unexecuted instantiation: pest::unicode::REJANG
Unexecuted instantiation: pest::unicode::SYMBOL
Unexecuted instantiation: pest::unicode::SYRIAC
Unexecuted instantiation: pest::unicode::TAI_LE
Unexecuted instantiation: pest::unicode::TANGSA
Unexecuted instantiation: pest::unicode::TANGUT
Unexecuted instantiation: pest::unicode::TELUGU
Unexecuted instantiation: pest::unicode::THAANA
Unexecuted instantiation: pest::unicode::WANCHO
Unexecuted instantiation: pest::unicode::YEZIDI
Unexecuted instantiation: pest::unicode::AVESTAN
Unexecuted instantiation: pest::unicode::BENGALI
Unexecuted instantiation: pest::unicode::BRAILLE
Unexecuted instantiation: pest::unicode::CONTROL
Unexecuted instantiation: pest::unicode::CYPRIOT
Unexecuted instantiation: pest::unicode::DESERET
Unexecuted instantiation: pest::unicode::ELBASAN
Unexecuted instantiation: pest::unicode::ELYMAIC
Unexecuted instantiation: pest::unicode::GRANTHA
Unexecuted instantiation: pest::unicode::HANUNOO
Unexecuted instantiation: pest::unicode::KANNADA
Unexecuted instantiation: pest::unicode::MAKASAR
Unexecuted instantiation: pest::unicode::MANDAIC
Unexecuted instantiation: pest::unicode::MARCHEN
Unexecuted instantiation: pest::unicode::MULTANI
Unexecuted instantiation: pest::unicode::MYANMAR
Unexecuted instantiation: pest::unicode::OSMANYA
Unexecuted instantiation: pest::unicode::RADICAL
Unexecuted instantiation: pest::unicode::SHARADA
Unexecuted instantiation: pest::unicode::SHAVIAN
Unexecuted instantiation: pest::unicode::SIDDHAM
Unexecuted instantiation: pest::unicode::SINHALA
Unexecuted instantiation: pest::unicode::SOGDIAN
Unexecuted instantiation: pest::unicode::SOYOMBO
Unexecuted instantiation: pest::unicode::TAGALOG
Unexecuted instantiation: pest::unicode::TIBETAN
Unexecuted instantiation: pest::unicode::TIRHUTA
Unexecuted instantiation: pest::unicode::ARMENIAN
Unexecuted instantiation: pest::unicode::BALINESE
Unexecuted instantiation: pest::unicode::BOPOMOFO
Unexecuted instantiation: pest::unicode::BUGINESE
Unexecuted instantiation: pest::unicode::CHEROKEE
Unexecuted instantiation: pest::unicode::CYRILLIC
Unexecuted instantiation: pest::unicode::DUPLOYAN
Unexecuted instantiation: pest::unicode::ETHIOPIC
Unexecuted instantiation: pest::unicode::EXTENDER
Unexecuted instantiation: pest::unicode::GEORGIAN
Unexecuted instantiation: pest::unicode::GUJARATI
Unexecuted instantiation: pest::unicode::GURMUKHI
Unexecuted instantiation: pest::unicode::HIRAGANA
Unexecuted instantiation: pest::unicode::ID_START
Unexecuted instantiation: pest::unicode::JAVANESE
Unexecuted instantiation: pest::unicode::KATAKANA
Unexecuted instantiation: pest::unicode::KAYAH_LI
Unexecuted instantiation: pest::unicode::LINEAR_A
Unexecuted instantiation: pest::unicode::LINEAR_B
Unexecuted instantiation: pest::unicode::MAHAJANI
Unexecuted instantiation: pest::unicode::OL_CHIKI
Unexecuted instantiation: pest::unicode::PHAGS_PA
Unexecuted instantiation: pest::unicode::TAGBANWA
Unexecuted instantiation: pest::unicode::TAI_THAM
Unexecuted instantiation: pest::unicode::TAI_VIET
Unexecuted instantiation: pest::unicode::TIFINAGH
Unexecuted instantiation: pest::unicode::UGARITIC
Unexecuted instantiation: pest::unicode::VITHKUQI
Unexecuted instantiation: pest::unicode::BASSA_VAH
Unexecuted instantiation: pest::unicode::BHAIKSUKI
Unexecuted instantiation: pest::unicode::CUNEIFORM
Unexecuted instantiation: pest::unicode::DIACRITIC
Unexecuted instantiation: pest::unicode::HEX_DIGIT
Unexecuted instantiation: pest::unicode::INHERITED
Unexecuted instantiation: pest::unicode::KHUDAWADI
Unexecuted instantiation: pest::unicode::LOWERCASE
Unexecuted instantiation: pest::unicode::MALAYALAM
Unexecuted instantiation: pest::unicode::MONGOLIAN
Unexecuted instantiation: pest::unicode::NABATAEAN
Unexecuted instantiation: pest::unicode::PALMYRENE
Unexecuted instantiation: pest::unicode::SAMARITAN
Unexecuted instantiation: pest::unicode::SEPARATOR
Unexecuted instantiation: pest::unicode::SUNDANESE
Unexecuted instantiation: pest::unicode::SURROGATE
Unexecuted instantiation: pest::unicode::UPPERCASE
Unexecuted instantiation: pest::unicode::XID_START
20
21
        pub static $property_names: &[&str] = &[
22
            $(stringify!($prop),)*
23
        ];
24
    };
25
}
26
27
macro_rules! char_property_functions {
28
    // For define custom property names
29
    {$(
30
        mod $module:ident;
31
        static $property_names:ident = [$(
32
            $prop:ident,
33
        )*];
34
    )*} => {$(
35
        property_functions!($module, $property_names, [$(
36
            $prop,
37
        )*]);
38
    )*};
39
    // For define property by copy BY_NAME values from `ucd-generate` generated.
40
    {$(
41
        mod $module:ident;
42
        static $property_names:ident = [$(
43
            ($_name:tt, $prop:ident),
44
        )*];
45
    )*} => {$(
46
        property_functions!($module, $property_names, [$(
47
            $prop,
48
        )*]);
49
    )*};
50
}
51
52
char_property_functions! {
53
    mod binary;
54
    static BINARY_PROPERTY_NAMES = [
55
        // ASCII_HEX_DIGIT, // let this one be stripped out -- the full trie is wasteful for ASCII
56
        ALPHABETIC, BIDI_CONTROL, CASE_IGNORABLE, CASED, CHANGES_WHEN_CASEFOLDED,
57
        CHANGES_WHEN_CASEMAPPED, CHANGES_WHEN_LOWERCASED, CHANGES_WHEN_TITLECASED,
58
        CHANGES_WHEN_UPPERCASED, DASH, DEFAULT_IGNORABLE_CODE_POINT, DEPRECATED, DIACRITIC,
59
        EMOJI, EMOJI_COMPONENT, EMOJI_MODIFIER, EMOJI_MODIFIER_BASE, EMOJI_PRESENTATION, EXTENDED_PICTOGRAPHIC,
60
        EXTENDER, GRAPHEME_BASE, GRAPHEME_EXTEND, GRAPHEME_LINK, HEX_DIGIT, HYPHEN,
61
        IDS_BINARY_OPERATOR, IDS_TRINARY_OPERATOR, ID_CONTINUE, ID_START, IDEOGRAPHIC, JOIN_CONTROL,
62
        LOGICAL_ORDER_EXCEPTION, LOWERCASE, MATH, NONCHARACTER_CODE_POINT, OTHER_ALPHABETIC,
63
        OTHER_DEFAULT_IGNORABLE_CODE_POINT, OTHER_GRAPHEME_EXTEND, OTHER_ID_CONTINUE,
64
        OTHER_ID_START, OTHER_LOWERCASE, OTHER_MATH, OTHER_UPPERCASE, PATTERN_SYNTAX,
65
        PATTERN_WHITE_SPACE, PREPENDED_CONCATENATION_MARK, QUOTATION_MARK, RADICAL,
66
        REGIONAL_INDICATOR, SENTENCE_TERMINAL, SOFT_DOTTED, TERMINAL_PUNCTUATION, UNIFIED_IDEOGRAPH,
67
        UPPERCASE, VARIATION_SELECTOR, WHITE_SPACE, XID_CONTINUE, XID_START,
68
    ];
69
}
70
71
char_property_functions! {
72
    mod category;
73
    // Copy from category::BY_NAME
74
    static CATEGORY_PROPERTY_NAMES = [
75
        ("Cased_Letter", CASED_LETTER), ("Close_Punctuation", CLOSE_PUNCTUATION),
76
        ("Connector_Punctuation", CONNECTOR_PUNCTUATION), ("Control", CONTROL),
77
        ("Currency_Symbol", CURRENCY_SYMBOL),
78
        ("Dash_Punctuation", DASH_PUNCTUATION), ("Decimal_Number", DECIMAL_NUMBER),
79
        ("Enclosing_Mark", ENCLOSING_MARK),
80
        ("Final_Punctuation", FINAL_PUNCTUATION), ("Format", FORMAT),
81
        ("Initial_Punctuation", INITIAL_PUNCTUATION), ("Letter", LETTER),
82
        ("Letter_Number", LETTER_NUMBER), ("Line_Separator", LINE_SEPARATOR),
83
        ("Lowercase_Letter", LOWERCASE_LETTER), ("Mark", MARK),
84
        ("Math_Symbol", MATH_SYMBOL), ("Modifier_Letter", MODIFIER_LETTER),
85
        ("Modifier_Symbol", MODIFIER_SYMBOL), ("Nonspacing_Mark", NONSPACING_MARK),
86
        ("Number", NUMBER), ("Open_Punctuation", OPEN_PUNCTUATION),
87
        ("Other", OTHER), ("Other_Letter", OTHER_LETTER),
88
        ("Other_Number", OTHER_NUMBER), ("Other_Punctuation", OTHER_PUNCTUATION),
89
        ("Other_Symbol", OTHER_SYMBOL),
90
        ("Paragraph_Separator", PARAGRAPH_SEPARATOR), ("Private_Use", PRIVATE_USE),
91
        ("Punctuation", PUNCTUATION), ("Separator", SEPARATOR),
92
        ("Space_Separator", SPACE_SEPARATOR), ("Spacing_Mark", SPACING_MARK),
93
        ("Surrogate", SURROGATE), ("Symbol", SYMBOL),
94
        ("Titlecase_Letter", TITLECASE_LETTER), ("Unassigned", UNASSIGNED),
95
        ("Uppercase_Letter", UPPERCASE_LETTER),
96
    ];
97
98
    mod script;
99
    // Copy from script::BY_NAME
100
    static SCRIPT_PROPERTY_NAMES = [
101
        ("Adlam", ADLAM),
102
        ("Ahom", AHOM),
103
        ("Anatolian_Hieroglyphs", ANATOLIAN_HIEROGLYPHS),
104
        ("Arabic", ARABIC),
105
        ("Armenian", ARMENIAN),
106
        ("Avestan", AVESTAN),
107
        ("Balinese", BALINESE),
108
        ("Bamum", BAMUM),
109
        ("Bassa_Vah", BASSA_VAH),
110
        ("Batak", BATAK),
111
        ("Bengali", BENGALI),
112
        ("Bhaiksuki", BHAIKSUKI),
113
        ("Bopomofo", BOPOMOFO),
114
        ("Brahmi", BRAHMI),
115
        ("Braille", BRAILLE),
116
        ("Buginese", BUGINESE),
117
        ("Buhid", BUHID),
118
        ("Canadian_Aboriginal", CANADIAN_ABORIGINAL),
119
        ("Carian", CARIAN),
120
        ("Caucasian_Albanian", CAUCASIAN_ALBANIAN),
121
        ("Chakma", CHAKMA),
122
        ("Cham", CHAM),
123
        ("Cherokee", CHEROKEE),
124
        ("Chorasmian", CHORASMIAN),
125
        ("Common", COMMON),
126
        ("Coptic", COPTIC),
127
        ("Cuneiform", CUNEIFORM),
128
        ("Cypriot", CYPRIOT),
129
        ("Cypro_Minoan", CYPRO_MINOAN),
130
        ("Cyrillic", CYRILLIC),
131
        ("Deseret", DESERET),
132
        ("Devanagari", DEVANAGARI),
133
        ("Dives_Akuru", DIVES_AKURU),
134
        ("Dogra", DOGRA),
135
        ("Duployan", DUPLOYAN),
136
        ("Egyptian_Hieroglyphs", EGYPTIAN_HIEROGLYPHS),
137
        ("Elbasan", ELBASAN),
138
        ("Elymaic", ELYMAIC),
139
        ("Ethiopic", ETHIOPIC),
140
        ("Georgian", GEORGIAN),
141
        ("Glagolitic", GLAGOLITIC),
142
        ("Gothic", GOTHIC),
143
        ("Grantha", GRANTHA),
144
        ("Greek", GREEK),
145
        ("Gujarati", GUJARATI),
146
        ("Gunjala_Gondi", GUNJALA_GONDI),
147
        ("Gurmukhi", GURMUKHI),
148
        ("Han", HAN),
149
        ("Hangul", HANGUL),
150
        ("Hanifi_Rohingya", HANIFI_ROHINGYA),
151
        ("Hanunoo", HANUNOO),
152
        ("Hatran", HATRAN),
153
        ("Hebrew", HEBREW),
154
        ("Hiragana", HIRAGANA),
155
        ("Imperial_Aramaic", IMPERIAL_ARAMAIC),
156
        ("Inherited", INHERITED),
157
        ("Inscriptional_Pahlavi", INSCRIPTIONAL_PAHLAVI),
158
        ("Inscriptional_Parthian", INSCRIPTIONAL_PARTHIAN),
159
        ("Javanese", JAVANESE),
160
        ("Kaithi", KAITHI),
161
        ("Kannada", KANNADA),
162
        ("Katakana", KATAKANA),
163
        ("Kawi", KAWI),
164
        ("Kayah_Li", KAYAH_LI),
165
        ("Kharoshthi", KHAROSHTHI),
166
        ("Khitan_Small_Script", KHITAN_SMALL_SCRIPT),
167
        ("Khmer", KHMER),
168
        ("Khojki", KHOJKI),
169
        ("Khudawadi", KHUDAWADI),
170
        ("Lao", LAO),
171
        ("Latin", LATIN),
172
        ("Lepcha", LEPCHA),
173
        ("Limbu", LIMBU),
174
        ("Linear_A", LINEAR_A),
175
        ("Linear_B", LINEAR_B),
176
        ("Lisu", LISU),
177
        ("Lycian", LYCIAN),
178
        ("Lydian", LYDIAN),
179
        ("Mahajani", MAHAJANI),
180
        ("Makasar", MAKASAR),
181
        ("Malayalam", MALAYALAM),
182
        ("Mandaic", MANDAIC),
183
        ("Manichaean", MANICHAEAN),
184
        ("Marchen", MARCHEN),
185
        ("Masaram_Gondi", MASARAM_GONDI),
186
        ("Medefaidrin", MEDEFAIDRIN),
187
        ("Meetei_Mayek", MEETEI_MAYEK),
188
        ("Mende_Kikakui", MENDE_KIKAKUI),
189
        ("Meroitic_Cursive", MEROITIC_CURSIVE),
190
        ("Meroitic_Hieroglyphs", MEROITIC_HIEROGLYPHS),
191
        ("Miao", MIAO),
192
        ("Modi", MODI),
193
        ("Mongolian", MONGOLIAN),
194
        ("Mro", MRO),
195
        ("Multani", MULTANI),
196
        ("Myanmar", MYANMAR),
197
        ("Nabataean", NABATAEAN),
198
        ("Nag_Mundari", NAG_MUNDARI),
199
        ("Nandinagari", NANDINAGARI),
200
        ("New_Tai_Lue", NEW_TAI_LUE),
201
        ("Newa", NEWA),
202
        ("Nko", NKO),
203
        ("Nushu", NUSHU),
204
        ("Nyiakeng_Puachue_Hmong", NYIAKENG_PUACHUE_HMONG),
205
        ("Ogham", OGHAM),
206
        ("Ol_Chiki", OL_CHIKI),
207
        ("Old_Hungarian", OLD_HUNGARIAN),
208
        ("Old_Italic", OLD_ITALIC),
209
        ("Old_North_Arabian", OLD_NORTH_ARABIAN),
210
        ("Old_Permic", OLD_PERMIC),
211
        ("Old_Persian", OLD_PERSIAN),
212
        ("Old_Sogdian", OLD_SOGDIAN),
213
        ("Old_South_Arabian", OLD_SOUTH_ARABIAN),
214
        ("Old_Turkic", OLD_TURKIC),
215
        ("Old_Uyghur", OLD_UYGHUR),
216
        ("Oriya", ORIYA),
217
        ("Osage", OSAGE),
218
        ("Osmanya", OSMANYA),
219
        ("Pahawh_Hmong", PAHAWH_HMONG),
220
        ("Palmyrene", PALMYRENE),
221
        ("Pau_Cin_Hau", PAU_CIN_HAU),
222
        ("Phags_Pa", PHAGS_PA),
223
        ("Phoenician", PHOENICIAN),
224
        ("Psalter_Pahlavi", PSALTER_PAHLAVI),
225
        ("Rejang", REJANG),
226
        ("Runic", RUNIC),
227
        ("Samaritan", SAMARITAN),
228
        ("Saurashtra", SAURASHTRA),
229
        ("Sharada", SHARADA),
230
        ("Shavian", SHAVIAN),
231
        ("Siddham", SIDDHAM),
232
        ("SignWriting", SIGNWRITING),
233
        ("Sinhala", SINHALA),
234
        ("Sogdian", SOGDIAN),
235
        ("Sora_Sompeng", SORA_SOMPENG),
236
        ("Soyombo", SOYOMBO),
237
        ("Sundanese", SUNDANESE),
238
        ("Syloti_Nagri", SYLOTI_NAGRI),
239
        ("Syriac", SYRIAC),
240
        ("Tagalog", TAGALOG),
241
        ("Tagbanwa", TAGBANWA),
242
        ("Tai_Le", TAI_LE),
243
        ("Tai_Tham", TAI_THAM),
244
        ("Tai_Viet", TAI_VIET),
245
        ("Takri", TAKRI),
246
        ("Tamil", TAMIL),
247
        ("Tangsa", TANGSA),
248
        ("Tangut", TANGUT),
249
        ("Telugu", TELUGU),
250
        ("Thaana", THAANA),
251
        ("Thai", THAI),
252
        ("Tibetan", TIBETAN),
253
        ("Tifinagh", TIFINAGH),
254
        ("Tirhuta", TIRHUTA),
255
        ("Toto", TOTO),
256
        ("Ugaritic", UGARITIC),
257
        ("Vai", VAI),
258
        ("Vithkuqi", VITHKUQI),
259
        ("Wancho", WANCHO),
260
        ("Warang_Citi", WARANG_CITI),
261
        ("Yezidi", YEZIDI),
262
        ("Yi", YI),
263
        ("Zanabazar_Square", ZANABAZAR_SQUARE),
264
    ];
265
}
266
267
/// Return all available unicode property names
268
0
pub fn unicode_property_names() -> Box<dyn Iterator<Item = &'static str>> {
269
0
    Box::new(
270
0
        BINARY_PROPERTY_NAMES
271
0
            .iter()
272
0
            .map(|name| *name)
273
0
            .chain(CATEGORY_PROPERTY_NAMES.iter().map(|name| *name))
274
0
            .chain(SCRIPT_PROPERTY_NAMES.iter().map(|name| *name)),
275
    )
276
0
}
277
278
0
pub fn by_name(name: &str) -> Option<Box<dyn Fn(char) -> bool>> {
279
0
    for property in binary::BY_NAME {
280
0
        if name == property.0.to_uppercase() {
281
0
            return Some(Box::new(move |c| property.1.contains_char(c)));
282
0
        }
283
    }
284
285
0
    for property in category::BY_NAME {
286
0
        if name == property.0.to_uppercase() {
287
0
            return Some(Box::new(move |c| property.1.contains_char(c)));
288
0
        }
289
    }
290
291
0
    for property in script::BY_NAME {
292
0
        if name == property.0.to_uppercase() {
293
0
            return Some(Box::new(move |c| property.1.contains_char(c)));
294
0
        }
295
    }
296
297
0
    None
298
0
}