unic_ucd_name_aliases/
name_aliases.rs1#[derive(Copy, Clone, Debug, Eq, PartialEq, Hash)]
13pub enum NameAliasType {
14 NameCorrections,
16
17 ControlCodeNames,
20
21 AlternateNames,
23
24 Figments,
27
28 NameAbbreviations,
31}
32
33impl NameAliasType {
34 pub fn of(ch: char) -> Option<&'static [NameAliasType]> {
36 data::NAME_ALIAS_TYPES.find(ch)
37 }
38}
39
40pub fn name_aliases_of(
42 ch: char,
43 name_alias_type: NameAliasType,
44) -> Option<&'static [&'static str]> {
45 match name_alias_type {
46 NameAliasType::NameCorrections => data::CORRECTIONS.find(ch),
47 NameAliasType::ControlCodeNames => data::CONTROLS.find(ch),
48 NameAliasType::AlternateNames => data::ALTERNATES.find(ch),
49 NameAliasType::Figments => data::FIGMENTS.find(ch),
50 NameAliasType::NameAbbreviations => data::ABBREVIATIONS.find(ch),
51 }
52}
53
54mod data {
55 use unic_char_property::tables::CharDataTable;
56 pub const CORRECTIONS: CharDataTable<&[&str]> = include!("../tables/corrections.rsv");
57 pub const CONTROLS: CharDataTable<&[&str]> = include!("../tables/controls.rsv");
58 pub const ALTERNATES: CharDataTable<&[&str]> = include!("../tables/alternates.rsv");
59 pub const FIGMENTS: CharDataTable<&[&str]> = include!("../tables/figments.rsv");
60 pub const ABBREVIATIONS: CharDataTable<&[&str]> = include!("../tables/abbreviations.rsv");
61
62 use crate::NameAliasType::{
65 AlternateNames,
66 ControlCodeNames,
67 Figments,
68 NameAbbreviations,
69 NameCorrections,
70 };
71 pub const NAME_ALIAS_TYPES: CharDataTable<&[crate::NameAliasType]> =
72 include!("../tables/name_alias_types.rsv");
73}