mod constants {
pub const GEORGIAN_SMALL_LETTER_AN: char = 'ⴀ';
pub const GEORGIAN_SMALL_LETTER_BAN: char = 'ⴁ';
pub const GEORGIAN_SMALL_LETTER_GAN: char = 'ⴂ';
pub const GEORGIAN_SMALL_LETTER_DON: char = 'ⴃ';
pub const GEORGIAN_SMALL_LETTER_EN: char = 'ⴄ';
pub const GEORGIAN_SMALL_LETTER_VIN: char = 'ⴅ';
pub const GEORGIAN_SMALL_LETTER_ZEN: char = 'ⴆ';
pub const GEORGIAN_SMALL_LETTER_TAN: char = 'ⴇ';
pub const GEORGIAN_SMALL_LETTER_IN: char = 'ⴈ';
pub const GEORGIAN_SMALL_LETTER_KAN: char = 'ⴉ';
pub const GEORGIAN_SMALL_LETTER_LAS: char = 'ⴊ';
pub const GEORGIAN_SMALL_LETTER_MAN: char = 'ⴋ';
pub const GEORGIAN_SMALL_LETTER_NAR: char = 'ⴌ';
pub const GEORGIAN_SMALL_LETTER_ON: char = 'ⴍ';
pub const GEORGIAN_SMALL_LETTER_PAR: char = 'ⴎ';
pub const GEORGIAN_SMALL_LETTER_ZHAR: char = 'ⴏ';
pub const GEORGIAN_SMALL_LETTER_RAE: char = 'ⴐ';
pub const GEORGIAN_SMALL_LETTER_SAN: char = 'ⴑ';
pub const GEORGIAN_SMALL_LETTER_TAR: char = 'ⴒ';
pub const GEORGIAN_SMALL_LETTER_UN: char = 'ⴓ';
pub const GEORGIAN_SMALL_LETTER_PHAR: char = 'ⴔ';
pub const GEORGIAN_SMALL_LETTER_KHAR: char = 'ⴕ';
pub const GEORGIAN_SMALL_LETTER_GHAN: char = 'ⴖ';
pub const GEORGIAN_SMALL_LETTER_QAR: char = 'ⴗ';
pub const GEORGIAN_SMALL_LETTER_SHIN: char = 'ⴘ';
pub const GEORGIAN_SMALL_LETTER_CHIN: char = 'ⴙ';
pub const GEORGIAN_SMALL_LETTER_CAN: char = 'ⴚ';
pub const GEORGIAN_SMALL_LETTER_JIL: char = 'ⴛ';
pub const GEORGIAN_SMALL_LETTER_CIL: char = 'ⴜ';
pub const GEORGIAN_SMALL_LETTER_CHAR: char = 'ⴝ';
pub const GEORGIAN_SMALL_LETTER_XAN: char = 'ⴞ';
pub const GEORGIAN_SMALL_LETTER_JHAN: char = 'ⴟ';
pub const GEORGIAN_SMALL_LETTER_HAE: char = 'ⴠ';
pub const GEORGIAN_SMALL_LETTER_HE: char = 'ⴡ';
pub const GEORGIAN_SMALL_LETTER_HIE: char = 'ⴢ';
pub const GEORGIAN_SMALL_LETTER_WE: char = 'ⴣ';
pub const GEORGIAN_SMALL_LETTER_HAR: char = 'ⴤ';
pub const GEORGIAN_SMALL_LETTER_HOE: char = 'ⴥ';
pub const GEORGIAN_SMALL_LETTER_YN: char = 'ⴧ';
pub const GEORGIAN_SMALL_LETTER_AEN: char = 'ⴭ';
}
#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum GeorgianSupplement {
GeorgianSmallLetterAn,
GeorgianSmallLetterBan,
GeorgianSmallLetterGan,
GeorgianSmallLetterDon,
GeorgianSmallLetterEn,
GeorgianSmallLetterVin,
GeorgianSmallLetterZen,
GeorgianSmallLetterTan,
GeorgianSmallLetterIn,
GeorgianSmallLetterKan,
GeorgianSmallLetterLas,
GeorgianSmallLetterMan,
GeorgianSmallLetterNar,
GeorgianSmallLetterOn,
GeorgianSmallLetterPar,
GeorgianSmallLetterZhar,
GeorgianSmallLetterRae,
GeorgianSmallLetterSan,
GeorgianSmallLetterTar,
GeorgianSmallLetterUn,
GeorgianSmallLetterPhar,
GeorgianSmallLetterKhar,
GeorgianSmallLetterGhan,
GeorgianSmallLetterQar,
GeorgianSmallLetterShin,
GeorgianSmallLetterChin,
GeorgianSmallLetterCan,
GeorgianSmallLetterJil,
GeorgianSmallLetterCil,
GeorgianSmallLetterChar,
GeorgianSmallLetterXan,
GeorgianSmallLetterJhan,
GeorgianSmallLetterHae,
GeorgianSmallLetterHe,
GeorgianSmallLetterHie,
GeorgianSmallLetterWe,
GeorgianSmallLetterHar,
GeorgianSmallLetterHoe,
GeorgianSmallLetterYn,
GeorgianSmallLetterAen,
}
impl Into<char> for GeorgianSupplement {
fn into(self) -> char {
use constants::*;
match self {
GeorgianSupplement::GeorgianSmallLetterAn => GEORGIAN_SMALL_LETTER_AN,
GeorgianSupplement::GeorgianSmallLetterBan => GEORGIAN_SMALL_LETTER_BAN,
GeorgianSupplement::GeorgianSmallLetterGan => GEORGIAN_SMALL_LETTER_GAN,
GeorgianSupplement::GeorgianSmallLetterDon => GEORGIAN_SMALL_LETTER_DON,
GeorgianSupplement::GeorgianSmallLetterEn => GEORGIAN_SMALL_LETTER_EN,
GeorgianSupplement::GeorgianSmallLetterVin => GEORGIAN_SMALL_LETTER_VIN,
GeorgianSupplement::GeorgianSmallLetterZen => GEORGIAN_SMALL_LETTER_ZEN,
GeorgianSupplement::GeorgianSmallLetterTan => GEORGIAN_SMALL_LETTER_TAN,
GeorgianSupplement::GeorgianSmallLetterIn => GEORGIAN_SMALL_LETTER_IN,
GeorgianSupplement::GeorgianSmallLetterKan => GEORGIAN_SMALL_LETTER_KAN,
GeorgianSupplement::GeorgianSmallLetterLas => GEORGIAN_SMALL_LETTER_LAS,
GeorgianSupplement::GeorgianSmallLetterMan => GEORGIAN_SMALL_LETTER_MAN,
GeorgianSupplement::GeorgianSmallLetterNar => GEORGIAN_SMALL_LETTER_NAR,
GeorgianSupplement::GeorgianSmallLetterOn => GEORGIAN_SMALL_LETTER_ON,
GeorgianSupplement::GeorgianSmallLetterPar => GEORGIAN_SMALL_LETTER_PAR,
GeorgianSupplement::GeorgianSmallLetterZhar => GEORGIAN_SMALL_LETTER_ZHAR,
GeorgianSupplement::GeorgianSmallLetterRae => GEORGIAN_SMALL_LETTER_RAE,
GeorgianSupplement::GeorgianSmallLetterSan => GEORGIAN_SMALL_LETTER_SAN,
GeorgianSupplement::GeorgianSmallLetterTar => GEORGIAN_SMALL_LETTER_TAR,
GeorgianSupplement::GeorgianSmallLetterUn => GEORGIAN_SMALL_LETTER_UN,
GeorgianSupplement::GeorgianSmallLetterPhar => GEORGIAN_SMALL_LETTER_PHAR,
GeorgianSupplement::GeorgianSmallLetterKhar => GEORGIAN_SMALL_LETTER_KHAR,
GeorgianSupplement::GeorgianSmallLetterGhan => GEORGIAN_SMALL_LETTER_GHAN,
GeorgianSupplement::GeorgianSmallLetterQar => GEORGIAN_SMALL_LETTER_QAR,
GeorgianSupplement::GeorgianSmallLetterShin => GEORGIAN_SMALL_LETTER_SHIN,
GeorgianSupplement::GeorgianSmallLetterChin => GEORGIAN_SMALL_LETTER_CHIN,
GeorgianSupplement::GeorgianSmallLetterCan => GEORGIAN_SMALL_LETTER_CAN,
GeorgianSupplement::GeorgianSmallLetterJil => GEORGIAN_SMALL_LETTER_JIL,
GeorgianSupplement::GeorgianSmallLetterCil => GEORGIAN_SMALL_LETTER_CIL,
GeorgianSupplement::GeorgianSmallLetterChar => GEORGIAN_SMALL_LETTER_CHAR,
GeorgianSupplement::GeorgianSmallLetterXan => GEORGIAN_SMALL_LETTER_XAN,
GeorgianSupplement::GeorgianSmallLetterJhan => GEORGIAN_SMALL_LETTER_JHAN,
GeorgianSupplement::GeorgianSmallLetterHae => GEORGIAN_SMALL_LETTER_HAE,
GeorgianSupplement::GeorgianSmallLetterHe => GEORGIAN_SMALL_LETTER_HE,
GeorgianSupplement::GeorgianSmallLetterHie => GEORGIAN_SMALL_LETTER_HIE,
GeorgianSupplement::GeorgianSmallLetterWe => GEORGIAN_SMALL_LETTER_WE,
GeorgianSupplement::GeorgianSmallLetterHar => GEORGIAN_SMALL_LETTER_HAR,
GeorgianSupplement::GeorgianSmallLetterHoe => GEORGIAN_SMALL_LETTER_HOE,
GeorgianSupplement::GeorgianSmallLetterYn => GEORGIAN_SMALL_LETTER_YN,
GeorgianSupplement::GeorgianSmallLetterAen => GEORGIAN_SMALL_LETTER_AEN,
}
}
}
impl std::convert::TryFrom<char> for GeorgianSupplement {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
use constants::*;
match c {
GEORGIAN_SMALL_LETTER_AN => Ok(GeorgianSupplement::GeorgianSmallLetterAn),
GEORGIAN_SMALL_LETTER_BAN => Ok(GeorgianSupplement::GeorgianSmallLetterBan),
GEORGIAN_SMALL_LETTER_GAN => Ok(GeorgianSupplement::GeorgianSmallLetterGan),
GEORGIAN_SMALL_LETTER_DON => Ok(GeorgianSupplement::GeorgianSmallLetterDon),
GEORGIAN_SMALL_LETTER_EN => Ok(GeorgianSupplement::GeorgianSmallLetterEn),
GEORGIAN_SMALL_LETTER_VIN => Ok(GeorgianSupplement::GeorgianSmallLetterVin),
GEORGIAN_SMALL_LETTER_ZEN => Ok(GeorgianSupplement::GeorgianSmallLetterZen),
GEORGIAN_SMALL_LETTER_TAN => Ok(GeorgianSupplement::GeorgianSmallLetterTan),
GEORGIAN_SMALL_LETTER_IN => Ok(GeorgianSupplement::GeorgianSmallLetterIn),
GEORGIAN_SMALL_LETTER_KAN => Ok(GeorgianSupplement::GeorgianSmallLetterKan),
GEORGIAN_SMALL_LETTER_LAS => Ok(GeorgianSupplement::GeorgianSmallLetterLas),
GEORGIAN_SMALL_LETTER_MAN => Ok(GeorgianSupplement::GeorgianSmallLetterMan),
GEORGIAN_SMALL_LETTER_NAR => Ok(GeorgianSupplement::GeorgianSmallLetterNar),
GEORGIAN_SMALL_LETTER_ON => Ok(GeorgianSupplement::GeorgianSmallLetterOn),
GEORGIAN_SMALL_LETTER_PAR => Ok(GeorgianSupplement::GeorgianSmallLetterPar),
GEORGIAN_SMALL_LETTER_ZHAR => Ok(GeorgianSupplement::GeorgianSmallLetterZhar),
GEORGIAN_SMALL_LETTER_RAE => Ok(GeorgianSupplement::GeorgianSmallLetterRae),
GEORGIAN_SMALL_LETTER_SAN => Ok(GeorgianSupplement::GeorgianSmallLetterSan),
GEORGIAN_SMALL_LETTER_TAR => Ok(GeorgianSupplement::GeorgianSmallLetterTar),
GEORGIAN_SMALL_LETTER_UN => Ok(GeorgianSupplement::GeorgianSmallLetterUn),
GEORGIAN_SMALL_LETTER_PHAR => Ok(GeorgianSupplement::GeorgianSmallLetterPhar),
GEORGIAN_SMALL_LETTER_KHAR => Ok(GeorgianSupplement::GeorgianSmallLetterKhar),
GEORGIAN_SMALL_LETTER_GHAN => Ok(GeorgianSupplement::GeorgianSmallLetterGhan),
GEORGIAN_SMALL_LETTER_QAR => Ok(GeorgianSupplement::GeorgianSmallLetterQar),
GEORGIAN_SMALL_LETTER_SHIN => Ok(GeorgianSupplement::GeorgianSmallLetterShin),
GEORGIAN_SMALL_LETTER_CHIN => Ok(GeorgianSupplement::GeorgianSmallLetterChin),
GEORGIAN_SMALL_LETTER_CAN => Ok(GeorgianSupplement::GeorgianSmallLetterCan),
GEORGIAN_SMALL_LETTER_JIL => Ok(GeorgianSupplement::GeorgianSmallLetterJil),
GEORGIAN_SMALL_LETTER_CIL => Ok(GeorgianSupplement::GeorgianSmallLetterCil),
GEORGIAN_SMALL_LETTER_CHAR => Ok(GeorgianSupplement::GeorgianSmallLetterChar),
GEORGIAN_SMALL_LETTER_XAN => Ok(GeorgianSupplement::GeorgianSmallLetterXan),
GEORGIAN_SMALL_LETTER_JHAN => Ok(GeorgianSupplement::GeorgianSmallLetterJhan),
GEORGIAN_SMALL_LETTER_HAE => Ok(GeorgianSupplement::GeorgianSmallLetterHae),
GEORGIAN_SMALL_LETTER_HE => Ok(GeorgianSupplement::GeorgianSmallLetterHe),
GEORGIAN_SMALL_LETTER_HIE => Ok(GeorgianSupplement::GeorgianSmallLetterHie),
GEORGIAN_SMALL_LETTER_WE => Ok(GeorgianSupplement::GeorgianSmallLetterWe),
GEORGIAN_SMALL_LETTER_HAR => Ok(GeorgianSupplement::GeorgianSmallLetterHar),
GEORGIAN_SMALL_LETTER_HOE => Ok(GeorgianSupplement::GeorgianSmallLetterHoe),
GEORGIAN_SMALL_LETTER_YN => Ok(GeorgianSupplement::GeorgianSmallLetterYn),
GEORGIAN_SMALL_LETTER_AEN => Ok(GeorgianSupplement::GeorgianSmallLetterAen),
_ => Err(()),
}
}
}
impl Into<u32> for GeorgianSupplement {
fn into(self) -> u32 {
let c: char = self.into();
let hex = c
.escape_unicode()
.to_string()
.replace("\\u{", "")
.replace("}", "");
u32::from_str_radix(&hex, 16).unwrap()
}
}
impl std::convert::TryFrom<u32> for GeorgianSupplement {
type Error = ();
fn try_from(u: u32) -> Result<Self, Self::Error> {
if let Ok(c) = char::try_from(u) {
Self::try_from(c)
} else {
Err(())
}
}
}
impl Iterator for GeorgianSupplement {
type Item = Self;
fn next(&mut self) -> Option<Self> {
let index: u32 = (*self).into();
use std::convert::TryFrom;
Self::try_from(index + 1).ok()
}
}
impl GeorgianSupplement {
pub fn new() -> Self {
GeorgianSupplement::GeorgianSmallLetterAn
}
pub fn name(&self) -> &str {
match self {
GeorgianSupplement::GeorgianSmallLetterAn => "georgian small letter an",
GeorgianSupplement::GeorgianSmallLetterBan => "georgian small letter ban",
GeorgianSupplement::GeorgianSmallLetterGan => "georgian small letter gan",
GeorgianSupplement::GeorgianSmallLetterDon => "georgian small letter don",
GeorgianSupplement::GeorgianSmallLetterEn => "georgian small letter en",
GeorgianSupplement::GeorgianSmallLetterVin => "georgian small letter vin",
GeorgianSupplement::GeorgianSmallLetterZen => "georgian small letter zen",
GeorgianSupplement::GeorgianSmallLetterTan => "georgian small letter tan",
GeorgianSupplement::GeorgianSmallLetterIn => "georgian small letter in",
GeorgianSupplement::GeorgianSmallLetterKan => "georgian small letter kan",
GeorgianSupplement::GeorgianSmallLetterLas => "georgian small letter las",
GeorgianSupplement::GeorgianSmallLetterMan => "georgian small letter man",
GeorgianSupplement::GeorgianSmallLetterNar => "georgian small letter nar",
GeorgianSupplement::GeorgianSmallLetterOn => "georgian small letter on",
GeorgianSupplement::GeorgianSmallLetterPar => "georgian small letter par",
GeorgianSupplement::GeorgianSmallLetterZhar => "georgian small letter zhar",
GeorgianSupplement::GeorgianSmallLetterRae => "georgian small letter rae",
GeorgianSupplement::GeorgianSmallLetterSan => "georgian small letter san",
GeorgianSupplement::GeorgianSmallLetterTar => "georgian small letter tar",
GeorgianSupplement::GeorgianSmallLetterUn => "georgian small letter un",
GeorgianSupplement::GeorgianSmallLetterPhar => "georgian small letter phar",
GeorgianSupplement::GeorgianSmallLetterKhar => "georgian small letter khar",
GeorgianSupplement::GeorgianSmallLetterGhan => "georgian small letter ghan",
GeorgianSupplement::GeorgianSmallLetterQar => "georgian small letter qar",
GeorgianSupplement::GeorgianSmallLetterShin => "georgian small letter shin",
GeorgianSupplement::GeorgianSmallLetterChin => "georgian small letter chin",
GeorgianSupplement::GeorgianSmallLetterCan => "georgian small letter can",
GeorgianSupplement::GeorgianSmallLetterJil => "georgian small letter jil",
GeorgianSupplement::GeorgianSmallLetterCil => "georgian small letter cil",
GeorgianSupplement::GeorgianSmallLetterChar => "georgian small letter char",
GeorgianSupplement::GeorgianSmallLetterXan => "georgian small letter xan",
GeorgianSupplement::GeorgianSmallLetterJhan => "georgian small letter jhan",
GeorgianSupplement::GeorgianSmallLetterHae => "georgian small letter hae",
GeorgianSupplement::GeorgianSmallLetterHe => "georgian small letter he",
GeorgianSupplement::GeorgianSmallLetterHie => "georgian small letter hie",
GeorgianSupplement::GeorgianSmallLetterWe => "georgian small letter we",
GeorgianSupplement::GeorgianSmallLetterHar => "georgian small letter har",
GeorgianSupplement::GeorgianSmallLetterHoe => "georgian small letter hoe",
GeorgianSupplement::GeorgianSmallLetterYn => "georgian small letter yn",
GeorgianSupplement::GeorgianSmallLetterAen => "georgian small letter aen",
}
}
}