eunicode 0.1.5

A text processing CLI and library that helps sanitize text by removing the naughty bits to make strings good and safe.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
use ucd::{Script, UnicodeBlock, UnicodeCategory};
use unicode_security::general_security_profile::IdentifierType;

pub fn char_identifier_to_string(ident: IdentifierType) -> &'static str {
    match ident {
        IdentifierType::Not_Character => "Not Character",
        IdentifierType::Deprecated => "Deprecated",
        IdentifierType::Default_Ignorable => "Default Ignorable",
        IdentifierType::Not_NFKC => "Not NFKC",
        IdentifierType::Not_XID => "Not XID",
        IdentifierType::Exclusion => "Exclusion",
        IdentifierType::Obsolete => "Obsolete",
        IdentifierType::Technical => "Technical",
        IdentifierType::Uncommon_Use => "Uncommon Use",
        IdentifierType::Limited_Use => "Limited Use",
        IdentifierType::Inclusion => "Inclusion",
        IdentifierType::Recommended => "Recommended",
    }
}

pub fn general_category_to_string(cat: UnicodeCategory) -> &'static str {
    match cat {
        UnicodeCategory::ClosePunctuation => "ClosePunctuation",
        UnicodeCategory::ConnectorPunctuation => "ConnectorPunctuation",
        UnicodeCategory::Control => "Control",
        UnicodeCategory::CurrencySymbol => "CurrencySymbol",
        UnicodeCategory::DashPunctuation => "DashPunctuation",
        UnicodeCategory::DecimalNumber => "DecimalNumber",
        UnicodeCategory::EnclosingMark => "EnclosingMark",
        UnicodeCategory::FinalPunctuation => "FinalPunctuation",
        UnicodeCategory::Format => "Format",
        UnicodeCategory::InitialPunctuation => "InitialPunctuation",
        UnicodeCategory::LetterNumber => "LetterNumber",
        UnicodeCategory::LineSeparator => "LineSeparator",
        UnicodeCategory::LowercaseLetter => "LowercaseLetter",
        UnicodeCategory::MathSymbol => "MathSymbol",
        UnicodeCategory::ModifierLetter => "ModifierLetter",
        UnicodeCategory::ModifierSymbol => "ModifierSymbol",
        UnicodeCategory::NonspacingMark => "NonspacingMark",
        UnicodeCategory::OpenPunctuation => "OpenPunctuation",
        UnicodeCategory::OtherLetter => "OtherLetter",
        UnicodeCategory::OtherNumber => "OtherNumber",
        UnicodeCategory::OtherPunctuation => "OtherPunctuation",
        UnicodeCategory::OtherSymbol => "OtherSymbol",
        UnicodeCategory::ParagraphSeparator => "ParagraphSeparator",
        UnicodeCategory::PrivateUse => "PrivateUse",
        UnicodeCategory::SpaceSeparator => "SpaceSeparator",
        UnicodeCategory::SpacingMark => "SpacingMark",
        UnicodeCategory::Surrogate => "Surrogate",
        UnicodeCategory::TitlecaseLetter => "TitlecaseLetter",
        UnicodeCategory::Unassigned => "Unassigned",
        UnicodeCategory::UppercaseLetter => "UppercaseLetter",
    }
}

pub fn unicode_block_to_string(block: Option<UnicodeBlock>) -> &'static str {
    match block {
        Some(block) => match block {
            UnicodeBlock::BasicLatin => "BasicLatin",
            UnicodeBlock::Latin1Supplement => "Latin1Supplement",
            UnicodeBlock::LatinExtendedA => "LatinExtendedA",
            UnicodeBlock::LatinExtendedB => "LatinExtendedB",
            UnicodeBlock::IPAExtensions => "IPAExtensions",
            UnicodeBlock::SpacingModifierLetters => "SpacingModifierLetters",
            UnicodeBlock::CombiningDiacriticalMarks => "CombiningDiacriticalMarks",
            UnicodeBlock::GreekandCoptic => "GreekandCoptic",
            UnicodeBlock::Cyrillic => "Cyrillic",
            UnicodeBlock::CyrillicSupplement => "CyrillicSupplement",
            UnicodeBlock::Armenian => "Armenian",
            UnicodeBlock::Hebrew => "Hebrew",
            UnicodeBlock::Arabic => "Arabic",
            UnicodeBlock::Syriac => "Syriac",
            UnicodeBlock::ArabicSupplement => "ArabicSupplement",
            UnicodeBlock::Thaana => "Thaana",
            UnicodeBlock::NKo => "NKo",
            UnicodeBlock::Samaritan => "Samaritan",
            UnicodeBlock::Mandaic => "Mandaic",
            UnicodeBlock::ArabicExtendedA => "ArabicExtendedA",
            UnicodeBlock::Devanagari => "Devanagari",
            UnicodeBlock::Bengali => "Bengali",
            UnicodeBlock::Gurmukhi => "Gurmukhi",
            UnicodeBlock::Gujarati => "Gujarati",
            UnicodeBlock::Oriya => "Oriya",
            UnicodeBlock::Tamil => "Tamil",
            UnicodeBlock::Telugu => "Telugu",
            UnicodeBlock::Kannada => "Kannada",
            UnicodeBlock::Malayalam => "Malayalam",
            UnicodeBlock::Sinhala => "Sinhala",
            UnicodeBlock::Thai => "Thai",
            UnicodeBlock::Lao => "Lao",
            UnicodeBlock::Tibetan => "Tibetan",
            UnicodeBlock::Myanmar => "Myanmar",
            UnicodeBlock::Georgian => "Georgian",
            UnicodeBlock::HangulJamo => "HangulJamo",
            UnicodeBlock::Ethiopic => "Ethiopic",
            UnicodeBlock::EthiopicSupplement => "EthiopicSupplement",
            UnicodeBlock::Cherokee => "Cherokee",
            UnicodeBlock::UnifiedCanadianAboriginalSyllabics => {
                "UnifiedCanadianAboriginalSyllabics"
            }
            UnicodeBlock::Ogham => "Ogham",
            UnicodeBlock::Runic => "Runic",
            UnicodeBlock::Tagalog => "Tagalog",
            UnicodeBlock::Hanunoo => "Hanunoo",
            UnicodeBlock::Buhid => "Buhid",
            UnicodeBlock::Tagbanwa => "Tagbanwa",
            UnicodeBlock::Khmer => "Khmer",
            UnicodeBlock::Mongolian => "Mongolian",
            UnicodeBlock::UnifiedCanadianAboriginalSyllabicsExtended => {
                "UnifiedCanadianAboriginalSyllabicsExtended"
            }
            UnicodeBlock::Limbu => "Limbu",
            UnicodeBlock::TaiLe => "TaiLe",
            UnicodeBlock::NewTaiLue => "NewTaiLue",
            UnicodeBlock::KhmerSymbols => "KhmerSymbols",
            UnicodeBlock::Buginese => "Buginese",
            UnicodeBlock::TaiTham => "TaiTham",
            UnicodeBlock::CombiningDiacriticalMarksExtended => {
                "CombiningDiacriticalMarksExtended"
            }
            UnicodeBlock::Balinese => "Balinese",
            UnicodeBlock::Sundanese => "Sundanese",
            UnicodeBlock::Batak => "Batak",
            UnicodeBlock::Lepcha => "Lepcha",
            UnicodeBlock::OlChiki => "OlChiki",
            UnicodeBlock::CyrillicExtendedC => "CyrillicExtendedC",
            UnicodeBlock::SundaneseSupplement => "SundaneseSupplement",
            UnicodeBlock::VedicExtensions => "VedicExtensions",
            UnicodeBlock::PhoneticExtensions => "PhoneticExtensions",
            UnicodeBlock::PhoneticExtensionsSupplement => "PhoneticExtensionsSupplement",
            UnicodeBlock::CombiningDiacriticalMarksSupplement => {
                "CombiningDiacriticalMarksSupplement"
            }
            UnicodeBlock::LatinExtendedAdditional => "LatinExtendedAdditional",
            UnicodeBlock::GreekExtended => "GreekExtended",
            UnicodeBlock::GeneralPunctuation => "GeneralPunctuation",
            UnicodeBlock::SuperscriptsandSubscripts => "SuperscriptsandSubscripts",
            UnicodeBlock::CurrencySymbols => "CurrencySymbols",
            UnicodeBlock::CombiningDiacriticalMarksforSymbols => {
                "CombiningDiacriticalMarksforSymbols"
            }
            UnicodeBlock::LetterlikeSymbols => "LetterlikeSymbols",
            UnicodeBlock::NumberForms => "NumberForms",
            UnicodeBlock::Arrows => "Arrows",
            UnicodeBlock::MathematicalOperators => "MathematicalOperators",
            UnicodeBlock::MiscellaneousTechnical => "MiscellaneousTechnical",
            UnicodeBlock::ControlPictures => "ControlPictures",
            UnicodeBlock::OpticalCharacterRecognition => "OpticalCharacterRecognition",
            UnicodeBlock::EnclosedAlphanumerics => "EnclosedAlphanumerics",
            UnicodeBlock::BoxDrawing => "BoxDrawing",
            UnicodeBlock::BlockElements => "BlockElements",
            UnicodeBlock::GeometricShapes => "GeometricShapes",
            UnicodeBlock::MiscellaneousSymbols => "MiscellaneousSymbols",
            UnicodeBlock::Dingbats => "Dingbats",
            UnicodeBlock::MiscellaneousMathematicalSymbolsA => {
                "MiscellaneousMathematicalSymbolsA"
            }
            UnicodeBlock::SupplementalArrowsA => "SupplementalArrowsA",
            UnicodeBlock::BraillePatterns => "BraillePatterns",
            UnicodeBlock::SupplementalArrowsB => "SupplementalArrowsB",
            UnicodeBlock::MiscellaneousMathematicalSymbolsB => {
                "MiscellaneousMathematicalSymbolsB"
            }
            UnicodeBlock::SupplementalMathematicalOperators => {
                "SupplementalMathematicalOperators"
            }
            UnicodeBlock::MiscellaneousSymbolsandArrows => "MiscellaneousSymbolsandArrows",
            UnicodeBlock::Glagolitic => "Glagolitic",
            UnicodeBlock::LatinExtendedC => "LatinExtendedC",
            UnicodeBlock::Coptic => "Coptic",
            UnicodeBlock::GeorgianSupplement => "GeorgianSupplement",
            UnicodeBlock::Tifinagh => "Tifinagh",
            UnicodeBlock::EthiopicExtended => "EthiopicExtended",
            UnicodeBlock::CyrillicExtendedA => "CyrillicExtendedA",
            UnicodeBlock::SupplementalPunctuation => "SupplementalPunctuation",
            UnicodeBlock::CJKRadicalsSupplement => "CJKRadicalsSupplement",
            UnicodeBlock::KangxiRadicals => "KangxiRadicals",
            UnicodeBlock::IdeographicDescriptionCharacters => {
                "IdeographicDescriptionCharacters"
            }
            UnicodeBlock::CJKSymbolsandPunctuation => "CJKSymbolsandPunctuation",
            UnicodeBlock::Hiragana => "Hiragana",
            UnicodeBlock::Katakana => "Katakana",
            UnicodeBlock::Bopomofo => "Bopomofo",
            UnicodeBlock::HangulCompatibilityJamo => "HangulCompatibilityJamo",
            UnicodeBlock::Kanbun => "Kanbun",
            UnicodeBlock::BopomofoExtended => "BopomofoExtended",
            UnicodeBlock::CJKStrokes => "CJKStrokes",
            UnicodeBlock::KatakanaPhoneticExtensions => "KatakanaPhoneticExtensions",
            UnicodeBlock::EnclosedCJKLettersandMonths => "EnclosedCJKLettersandMonths",
            UnicodeBlock::CJKCompatibility => "CJKCompatibility",
            UnicodeBlock::CJKUnifiedIdeographsExtensionA => "CJKUnifiedIdeographsExtensionA",
            UnicodeBlock::YijingHexagramSymbols => "YijingHexagramSymbols",
            UnicodeBlock::CJKUnifiedIdeographs => "CJKUnifiedIdeographs",
            UnicodeBlock::YiSyllables => "YiSyllables",
            UnicodeBlock::YiRadicals => "YiRadicals",
            UnicodeBlock::Lisu => "Lisu",
            UnicodeBlock::Vai => "Vai",
            UnicodeBlock::CyrillicExtendedB => "CyrillicExtendedB",
            UnicodeBlock::Bamum => "Bamum",
            UnicodeBlock::ModifierToneLetters => "ModifierToneLetters",
            UnicodeBlock::LatinExtendedD => "LatinExtendedD",
            UnicodeBlock::SylotiNagri => "SylotiNagri",
            UnicodeBlock::CommonIndicNumberForms => "CommonIndicNumberForms",
            UnicodeBlock::Phagspa => "Phagspa",
            UnicodeBlock::Saurashtra => "Saurashtra",
            UnicodeBlock::DevanagariExtended => "DevanagariExtended",
            UnicodeBlock::KayahLi => "KayahLi",
            UnicodeBlock::Rejang => "Rejang",
            UnicodeBlock::HangulJamoExtendedA => "HangulJamoExtendedA",
            UnicodeBlock::Javanese => "Javanese",
            UnicodeBlock::MyanmarExtendedB => "MyanmarExtendedB",
            UnicodeBlock::Cham => "Cham",
            UnicodeBlock::MyanmarExtendedA => "MyanmarExtendedA",
            UnicodeBlock::TaiViet => "TaiViet",
            UnicodeBlock::MeeteiMayekExtensions => "MeeteiMayekExtensions",
            UnicodeBlock::EthiopicExtendedA => "EthiopicExtendedA",
            UnicodeBlock::LatinExtendedE => "LatinExtendedE",
            UnicodeBlock::CherokeeSupplement => "CherokeeSupplement",
            UnicodeBlock::MeeteiMayek => "MeeteiMayek",
            UnicodeBlock::HangulSyllables => "HangulSyllables",
            UnicodeBlock::HangulJamoExtendedB => "HangulJamoExtendedB",
            UnicodeBlock::HighSurrogates => "HighSurrogates",
            UnicodeBlock::HighPrivateUseSurrogates => "HighPrivateUseSurrogates",
            UnicodeBlock::LowSurrogates => "LowSurrogates",
            UnicodeBlock::PrivateUseArea => "PrivateUseArea",
            UnicodeBlock::CJKCompatibilityIdeographs => "CJKCompatibilityIdeographs",
            UnicodeBlock::AlphabeticPresentationForms => "AlphabeticPresentationForms",
            UnicodeBlock::ArabicPresentationFormsA => "ArabicPresentationFormsA",
            UnicodeBlock::VariationSelectors => "VariationSelectors",
            UnicodeBlock::VerticalForms => "VerticalForms",
            UnicodeBlock::CombiningHalfMarks => "CombiningHalfMarks",
            UnicodeBlock::CJKCompatibilityForms => "CJKCompatibilityForms",
            UnicodeBlock::SmallFormVariants => "SmallFormVariants",
            UnicodeBlock::ArabicPresentationFormsB => "ArabicPresentationFormsB",
            UnicodeBlock::HalfwidthandFullwidthForms => "HalfwidthandFullwidthForms",
            UnicodeBlock::Specials => "Specials",
            UnicodeBlock::LinearBSyllabary => "LinearBSyllabary",
            UnicodeBlock::LinearBIdeograms => "LinearBIdeograms",
            UnicodeBlock::AegeanNumbers => "AegeanNumbers",
            UnicodeBlock::AncientGreekNumbers => "AncientGreekNumbers",
            UnicodeBlock::AncientSymbols => "AncientSymbols",
            UnicodeBlock::PhaistosDisc => "PhaistosDisc",
            UnicodeBlock::Lycian => "Lycian",
            UnicodeBlock::Carian => "Carian",
            UnicodeBlock::CopticEpactNumbers => "CopticEpactNumbers",
            UnicodeBlock::OldItalic => "OldItalic",
            UnicodeBlock::Gothic => "Gothic",
            UnicodeBlock::OldPermic => "OldPermic",
            UnicodeBlock::Ugaritic => "Ugaritic",
            UnicodeBlock::OldPersian => "OldPersian",
            UnicodeBlock::Deseret => "Deseret",
            UnicodeBlock::Shavian => "Shavian",
            UnicodeBlock::Osmanya => "Osmanya",
            UnicodeBlock::Osage => "Osage",
            UnicodeBlock::Elbasan => "Elbasan",
            UnicodeBlock::CaucasianAlbanian => "CaucasianAlbanian",
            UnicodeBlock::LinearA => "LinearA",
            UnicodeBlock::CypriotSyllabary => "CypriotSyllabary",
            UnicodeBlock::ImperialAramaic => "ImperialAramaic",
            UnicodeBlock::Palmyrene => "Palmyrene",
            UnicodeBlock::Nabataean => "Nabataean",
            UnicodeBlock::Hatran => "Hatran",
            UnicodeBlock::Phoenician => "Phoenician",
            UnicodeBlock::Lydian => "Lydian",
            UnicodeBlock::MeroiticHieroglyphs => "MeroiticHieroglyphs",
            UnicodeBlock::MeroiticCursive => "MeroiticCursive",
            UnicodeBlock::Kharoshthi => "Kharoshthi",
            UnicodeBlock::OldSouthArabian => "OldSouthArabian",
            UnicodeBlock::OldNorthArabian => "OldNorthArabian",
            UnicodeBlock::Manichaean => "Manichaean",
            UnicodeBlock::Avestan => "Avestan",
            UnicodeBlock::InscriptionalParthian => "InscriptionalParthian",
            UnicodeBlock::InscriptionalPahlavi => "InscriptionalPahlavi",
            UnicodeBlock::PsalterPahlavi => "PsalterPahlavi",
            UnicodeBlock::OldTurkic => "OldTurkic",
            UnicodeBlock::OldHungarian => "OldHungarian",
            UnicodeBlock::RumiNumeralSymbols => "RumiNumeralSymbols",
            UnicodeBlock::Brahmi => "Brahmi",
            UnicodeBlock::Kaithi => "Kaithi",
            UnicodeBlock::SoraSompeng => "SoraSompeng",
            UnicodeBlock::Chakma => "Chakma",
            UnicodeBlock::Mahajani => "Mahajani",
            UnicodeBlock::Sharada => "Sharada",
            UnicodeBlock::SinhalaArchaicNumbers => "SinhalaArchaicNumbers",
            UnicodeBlock::Khojki => "Khojki",
            UnicodeBlock::Multani => "Multani",
            UnicodeBlock::Khudawadi => "Khudawadi",
            UnicodeBlock::Grantha => "Grantha",
            UnicodeBlock::Newa => "Newa",
            UnicodeBlock::Tirhuta => "Tirhuta",
            UnicodeBlock::Siddham => "Siddham",
            UnicodeBlock::Modi => "Modi",
            UnicodeBlock::MongolianSupplement => "MongolianSupplement",
            UnicodeBlock::Takri => "Takri",
            UnicodeBlock::Ahom => "Ahom",
            UnicodeBlock::WarangCiti => "WarangCiti",
            UnicodeBlock::PauCinHau => "PauCinHau",
            UnicodeBlock::Bhaiksuki => "Bhaiksuki",
            UnicodeBlock::Marchen => "Marchen",
            UnicodeBlock::Cuneiform => "Cuneiform",
            UnicodeBlock::CuneiformNumbersandPunctuation => "CuneiformNumbersandPunctuation",
            UnicodeBlock::EarlyDynasticCuneiform => "EarlyDynasticCuneiform",
            UnicodeBlock::EgyptianHieroglyphs => "EgyptianHieroglyphs",
            UnicodeBlock::AnatolianHieroglyphs => "AnatolianHieroglyphs",
            UnicodeBlock::BamumSupplement => "BamumSupplement",
            UnicodeBlock::Mro => "Mro",
            UnicodeBlock::BassaVah => "BassaVah",
            UnicodeBlock::PahawhHmong => "PahawhHmong",
            UnicodeBlock::Miao => "Miao",
            UnicodeBlock::IdeographicSymbolsandPunctuation => {
                "IdeographicSymbolsandPunctuation"
            }
            UnicodeBlock::Tangut => "Tangut",
            UnicodeBlock::TangutComponents => "TangutComponents",
            UnicodeBlock::KanaSupplement => "KanaSupplement",
            UnicodeBlock::Duployan => "Duployan",
            UnicodeBlock::ShorthandFormatControls => "ShorthandFormatControls",
            UnicodeBlock::ByzantineMusicalSymbols => "ByzantineMusicalSymbols",
            UnicodeBlock::MusicalSymbols => "MusicalSymbols",
            UnicodeBlock::AncientGreekMusicalNotation => "AncientGreekMusicalNotation",
            UnicodeBlock::TaiXuanJingSymbols => "TaiXuanJingSymbols",
            UnicodeBlock::CountingRodNumerals => "CountingRodNumerals",
            UnicodeBlock::MathematicalAlphanumericSymbols => {
                "MathematicalAlphanumericSymbols"
            }
            UnicodeBlock::SuttonSignWriting => "SuttonSignWriting",
            UnicodeBlock::GlagoliticSupplement => "GlagoliticSupplement",
            UnicodeBlock::MendeKikakui => "MendeKikakui",
            UnicodeBlock::Adlam => "Adlam",
            UnicodeBlock::ArabicMathematicalAlphabeticSymbols => {
                "ArabicMathematicalAlphabeticSymbols"
            }
            UnicodeBlock::MahjongTiles => "MahjongTiles",
            UnicodeBlock::DominoTiles => "DominoTiles",
            UnicodeBlock::PlayingCards => "PlayingCards",
            UnicodeBlock::EnclosedAlphanumericSupplement => "EnclosedAlphanumericSupplement",
            UnicodeBlock::EnclosedIdeographicSupplement => "EnclosedIdeographicSupplement",
            UnicodeBlock::MiscellaneousSymbolsandPictographs => {
                "MiscellaneousSymbolsandPictographs"
            }
            UnicodeBlock::Emoticons => "Emoticons",
            UnicodeBlock::OrnamentalDingbats => "OrnamentalDingbats",
            UnicodeBlock::TransportandMapSymbols => "TransportandMapSymbols",
            UnicodeBlock::AlchemicalSymbols => "AlchemicalSymbols",
            UnicodeBlock::GeometricShapesExtended => "GeometricShapesExtended",
            UnicodeBlock::SupplementalArrowsC => "SupplementalArrowsC",
            UnicodeBlock::SupplementalSymbolsandPictographs => {
                "SupplementalSymbolsandPictographs"
            }
            UnicodeBlock::CJKUnifiedIdeographsExtensionB => "CJKUnifiedIdeographsExtensionB",
            UnicodeBlock::CJKUnifiedIdeographsExtensionC => "CJKUnifiedIdeographsExtensionC",
            UnicodeBlock::CJKUnifiedIdeographsExtensionD => "CJKUnifiedIdeographsExtensionD",
            UnicodeBlock::CJKUnifiedIdeographsExtensionE => "CJKUnifiedIdeographsExtensionE",
            UnicodeBlock::CJKCompatibilityIdeographsSupplement => {
                "CJKCompatibilityIdeographsSupplement"
            }
            UnicodeBlock::Tags => "Tags",
            UnicodeBlock::VariationSelectorsSupplement => "VariationSelectorsSupplement",
            UnicodeBlock::SupplementaryPrivateUseAreaA => "SupplementaryPrivateUseAreaA",
            UnicodeBlock::SupplementaryPrivateUseAreaB => "SupplementaryPrivateUseAreaB",
        },
        None => "Unknown Unicode Block",
    }
}

pub fn unicode_script_to_string(script: Option<Script>) -> &'static str {
    match script {
        Some(script) => match script {
            Script::Adlam => "Adlam",
            Script::CaucasianAlbanian => "CaucasianAlbanian",
            Script::Ahom => "Ahom",
            Script::Arabic => "Arabic",
            Script::ImperialAramaic => "ImperialAramaic",
            Script::Armenian => "Armenian",
            Script::Avestan => "Avestan",
            Script::Balinese => "Balinese",
            Script::Bamum => "Bamum",
            Script::BassaVah => "BassaVah",
            Script::Batak => "Batak",
            Script::Bengali => "Bengali",
            Script::Bhaiksuki => "Bhaiksuki",
            Script::Bopomofo => "Bopomofo",
            Script::Brahmi => "Brahmi",
            Script::Braille => "Braille",
            Script::Buginese => "Buginese",
            Script::Buhid => "Buhid",
            Script::Chakma => "Chakma",
            Script::CanadianAboriginal => "CanadianAboriginal",
            Script::Carian => "Carian",
            Script::Cham => "Cham",
            Script::Cherokee => "Cherokee",
            Script::Coptic => "Coptic",
            Script::Cypriot => "Cypriot",
            Script::Cyrillic => "Cyrillic",
            Script::Devanagari => "Devanagari",
            Script::Deseret => "Deseret",
            Script::Duployan => "Duployan",
            Script::EgyptianHieroglyphs => "EgyptianHieroglyphs",
            Script::Elbasan => "Elbasan",
            Script::Ethiopic => "Ethiopic",
            Script::Georgian => "Georgian",
            Script::Glagolitic => "Glagolitic",
            Script::Gothic => "Gothic",
            Script::Grantha => "Grantha",
            Script::Greek => "Greek",
            Script::Gujarati => "Gujarati",
            Script::Gurmukhi => "Gurmukhi",
            Script::Hangul => "Hangul",
            Script::Han => "Han",
            Script::Hanunoo => "Hanunoo",
            Script::Hatran => "Hatran",
            Script::Hebrew => "Hebrew",
            Script::Hiragana => "Hiragana",
            Script::AnatolianHieroglyphs => "AnatolianHieroglyphs",
            Script::PahawhHmong => "PahawhHmong",
            Script::KatakanaOrHiragana => "KatakanaOrHiragana",
            Script::OldHungarian => "OldHungarian",
            Script::OldItalic => "OldItalic",
            Script::Javanese => "Javanese",
            Script::KayahLi => "KayahLi",
            Script::Katakana => "Katakana",
            Script::Kharoshthi => "Kharoshthi",
            Script::Khmer => "Khmer",
            Script::Khojki => "Khojki",
            Script::Kannada => "Kannada",
            Script::Kaithi => "Kaithi",
            Script::TaiTham => "TaiTham",
            Script::Lao => "Lao",
            Script::Latin => "Latin",
            Script::Lepcha => "Lepcha",
            Script::Limbu => "Limbu",
            Script::LinearA => "LinearA",
            Script::LinearB => "LinearB",
            Script::Lisu => "Lisu",
            Script::Lycian => "Lycian",
            Script::Lydian => "Lydian",
            Script::Mahajani => "Mahajani",
            Script::Mandaic => "Mandaic",
            Script::Manichaean => "Manichaean",
            Script::Marchen => "Marchen",
            Script::MendeKikakui => "MendeKikakui",
            Script::MeroiticCursive => "MeroiticCursive",
            Script::MeroiticHieroglyphs => "MeroiticHieroglyphs",
            Script::Malayalam => "Malayalam",
            Script::Modi => "Modi",
            Script::Mongolian => "Mongolian",
            Script::Mro => "Mro",
            Script::MeeteiMayek => "MeeteiMayek",
            Script::Multani => "Multani",
            Script::Myanmar => "Myanmar",
            Script::OldNorthArabian => "OldNorthArabian",
            Script::Nabataean => "Nabataean",
            Script::Newa => "Newa",
            Script::Nko => "Nko",
            Script::Ogham => "Ogham",
            Script::OlChiki => "OlChiki",
            Script::OldTurkic => "OldTurkic",
            Script::Oriya => "Oriya",
            Script::Osage => "Osage",
            Script::Osmanya => "Osmanya",
            Script::Palmyrene => "Palmyrene",
            Script::PauCinHau => "PauCinHau",
            Script::OldPermic => "OldPermic",
            Script::PhagsPa => "PhagsPa",
            Script::InscriptionalPahlavi => "InscriptionalPahlavi",
            Script::PsalterPahlavi => "PsalterPahlavi",
            Script::Phoenician => "Phoenician",
            Script::Miao => "Miao",
            Script::InscriptionalParthian => "InscriptionalParthian",
            Script::Rejang => "Rejang",
            Script::Runic => "Runic",
            Script::Samaritan => "Samaritan",
            Script::OldSouthArabian => "OldSouthArabian",
            Script::Saurashtra => "Saurashtra",
            Script::SignWriting => "SignWriting",
            Script::Shavian => "Shavian",
            Script::Sharada => "Sharada",
            Script::Siddham => "Siddham",
            Script::Khudawadi => "Khudawadi",
            Script::Sinhala => "Sinhala",
            Script::SoraSompeng => "SoraSompeng",
            Script::Sundanese => "Sundanese",
            Script::SylotiNagri => "SylotiNagri",
            Script::Syriac => "Syriac",
            Script::Tagbanwa => "Tagbanwa",
            Script::Takri => "Takri",
            Script::TaiLe => "TaiLe",
            Script::NewTaiLue => "NewTaiLue",
            Script::Tamil => "Tamil",
            Script::Tangut => "Tangut",
            Script::TaiViet => "TaiViet",
            Script::Telugu => "Telugu",
            Script::Tifinagh => "Tifinagh",
            Script::Tagalog => "Tagalog",
            Script::Thaana => "Thaana",
            Script::Thai => "Thai",
            Script::Tibetan => "Tibetan",
            Script::Tirhuta => "Tirhuta",
            Script::Ugaritic => "Ugaritic",
            Script::Vai => "Vai",
            Script::WarangCiti => "WarangCiti",
            Script::OldPersian => "OldPersian",
            Script::Cuneiform => "Cuneiform",
            Script::Yi => "Yi",
            Script::Inherited => "Inherited",
            Script::Common => "Common",
        },
        None => "Unknown Unicode Script",
    }
}