#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum OrnamentalDingbats {
NorthWestPointingLeaf,
SouthWestPointingLeaf,
NorthEastPointingLeaf,
SouthEastPointingLeaf,
TurnedNorthWestPointingLeaf,
TurnedSouthWestPointingLeaf,
TurnedNorthEastPointingLeaf,
TurnedSouthEastPointingLeaf,
NorthWestPointingVineLeaf,
SouthWestPointingVineLeaf,
NorthEastPointingVineLeaf,
SouthEastPointingVineLeaf,
HeavyNorthWestPointingVineLeaf,
HeavySouthWestPointingVineLeaf,
HeavyNorthEastPointingVineLeaf,
HeavySouthEastPointingVineLeaf,
NorthWestPointingBud,
SouthWestPointingBud,
NorthEastPointingBud,
SouthEastPointingBud,
HeavyNorthWestPointingBud,
HeavySouthWestPointingBud,
HeavyNorthEastPointingBud,
HeavySouthEastPointingBud,
HollowQuiltSquareOrnament,
HollowQuiltSquareOrnamentInBlackSquare,
SolidQuiltSquareOrnament,
SolidQuiltSquareOrnamentInBlackSquare,
LeftwardsRocket,
UpwardsRocket,
RightwardsRocket,
DownwardsRocket,
ScriptLigatureEtOrnament,
HeavyScriptLigatureEtOrnament,
LigatureOpenEtOrnament,
HeavyLigatureOpenEtOrnament,
HeavyAmpersandOrnament,
SwashAmpersandOrnament,
SansDashSerifHeavyDoubleTurnedCommaQuotationMarkOrnament,
SansDashSerifHeavyDoubleCommaQuotationMarkOrnament,
SansDashSerifHeavyLowDoubleCommaQuotationMarkOrnament,
HeavyInterrobangOrnament,
SansDashSerifInterrobangOrnament,
HeavySansDashSerifInterrobangOrnament,
VeryHeavySolidus,
VeryHeavyReverseSolidus,
CheckerBoard,
}
impl Into<char> for OrnamentalDingbats {
fn into(self) -> char {
match self {
OrnamentalDingbats::NorthWestPointingLeaf => '🙐',
OrnamentalDingbats::SouthWestPointingLeaf => '🙑',
OrnamentalDingbats::NorthEastPointingLeaf => '🙒',
OrnamentalDingbats::SouthEastPointingLeaf => '🙓',
OrnamentalDingbats::TurnedNorthWestPointingLeaf => '🙔',
OrnamentalDingbats::TurnedSouthWestPointingLeaf => '🙕',
OrnamentalDingbats::TurnedNorthEastPointingLeaf => '🙖',
OrnamentalDingbats::TurnedSouthEastPointingLeaf => '🙗',
OrnamentalDingbats::NorthWestPointingVineLeaf => '🙘',
OrnamentalDingbats::SouthWestPointingVineLeaf => '🙙',
OrnamentalDingbats::NorthEastPointingVineLeaf => '🙚',
OrnamentalDingbats::SouthEastPointingVineLeaf => '🙛',
OrnamentalDingbats::HeavyNorthWestPointingVineLeaf => '🙜',
OrnamentalDingbats::HeavySouthWestPointingVineLeaf => '🙝',
OrnamentalDingbats::HeavyNorthEastPointingVineLeaf => '🙞',
OrnamentalDingbats::HeavySouthEastPointingVineLeaf => '🙟',
OrnamentalDingbats::NorthWestPointingBud => '🙠',
OrnamentalDingbats::SouthWestPointingBud => '🙡',
OrnamentalDingbats::NorthEastPointingBud => '🙢',
OrnamentalDingbats::SouthEastPointingBud => '🙣',
OrnamentalDingbats::HeavyNorthWestPointingBud => '🙤',
OrnamentalDingbats::HeavySouthWestPointingBud => '🙥',
OrnamentalDingbats::HeavyNorthEastPointingBud => '🙦',
OrnamentalDingbats::HeavySouthEastPointingBud => '🙧',
OrnamentalDingbats::HollowQuiltSquareOrnament => '🙨',
OrnamentalDingbats::HollowQuiltSquareOrnamentInBlackSquare => '🙩',
OrnamentalDingbats::SolidQuiltSquareOrnament => '🙪',
OrnamentalDingbats::SolidQuiltSquareOrnamentInBlackSquare => '🙫',
OrnamentalDingbats::LeftwardsRocket => '🙬',
OrnamentalDingbats::UpwardsRocket => '🙭',
OrnamentalDingbats::RightwardsRocket => '🙮',
OrnamentalDingbats::DownwardsRocket => '🙯',
OrnamentalDingbats::ScriptLigatureEtOrnament => '🙰',
OrnamentalDingbats::HeavyScriptLigatureEtOrnament => '🙱',
OrnamentalDingbats::LigatureOpenEtOrnament => '🙲',
OrnamentalDingbats::HeavyLigatureOpenEtOrnament => '🙳',
OrnamentalDingbats::HeavyAmpersandOrnament => '🙴',
OrnamentalDingbats::SwashAmpersandOrnament => '🙵',
OrnamentalDingbats::SansDashSerifHeavyDoubleTurnedCommaQuotationMarkOrnament => '🙶',
OrnamentalDingbats::SansDashSerifHeavyDoubleCommaQuotationMarkOrnament => '🙷',
OrnamentalDingbats::SansDashSerifHeavyLowDoubleCommaQuotationMarkOrnament => '🙸',
OrnamentalDingbats::HeavyInterrobangOrnament => '🙹',
OrnamentalDingbats::SansDashSerifInterrobangOrnament => '🙺',
OrnamentalDingbats::HeavySansDashSerifInterrobangOrnament => '🙻',
OrnamentalDingbats::VeryHeavySolidus => '🙼',
OrnamentalDingbats::VeryHeavyReverseSolidus => '🙽',
OrnamentalDingbats::CheckerBoard => '🙾',
}
}
}
impl std::convert::TryFrom<char> for OrnamentalDingbats {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
match c {
'🙐' => Ok(OrnamentalDingbats::NorthWestPointingLeaf),
'🙑' => Ok(OrnamentalDingbats::SouthWestPointingLeaf),
'🙒' => Ok(OrnamentalDingbats::NorthEastPointingLeaf),
'🙓' => Ok(OrnamentalDingbats::SouthEastPointingLeaf),
'🙔' => Ok(OrnamentalDingbats::TurnedNorthWestPointingLeaf),
'🙕' => Ok(OrnamentalDingbats::TurnedSouthWestPointingLeaf),
'🙖' => Ok(OrnamentalDingbats::TurnedNorthEastPointingLeaf),
'🙗' => Ok(OrnamentalDingbats::TurnedSouthEastPointingLeaf),
'🙘' => Ok(OrnamentalDingbats::NorthWestPointingVineLeaf),
'🙙' => Ok(OrnamentalDingbats::SouthWestPointingVineLeaf),
'🙚' => Ok(OrnamentalDingbats::NorthEastPointingVineLeaf),
'🙛' => Ok(OrnamentalDingbats::SouthEastPointingVineLeaf),
'🙜' => Ok(OrnamentalDingbats::HeavyNorthWestPointingVineLeaf),
'🙝' => Ok(OrnamentalDingbats::HeavySouthWestPointingVineLeaf),
'🙞' => Ok(OrnamentalDingbats::HeavyNorthEastPointingVineLeaf),
'🙟' => Ok(OrnamentalDingbats::HeavySouthEastPointingVineLeaf),
'🙠' => Ok(OrnamentalDingbats::NorthWestPointingBud),
'🙡' => Ok(OrnamentalDingbats::SouthWestPointingBud),
'🙢' => Ok(OrnamentalDingbats::NorthEastPointingBud),
'🙣' => Ok(OrnamentalDingbats::SouthEastPointingBud),
'🙤' => Ok(OrnamentalDingbats::HeavyNorthWestPointingBud),
'🙥' => Ok(OrnamentalDingbats::HeavySouthWestPointingBud),
'🙦' => Ok(OrnamentalDingbats::HeavyNorthEastPointingBud),
'🙧' => Ok(OrnamentalDingbats::HeavySouthEastPointingBud),
'🙨' => Ok(OrnamentalDingbats::HollowQuiltSquareOrnament),
'🙩' => Ok(OrnamentalDingbats::HollowQuiltSquareOrnamentInBlackSquare),
'🙪' => Ok(OrnamentalDingbats::SolidQuiltSquareOrnament),
'🙫' => Ok(OrnamentalDingbats::SolidQuiltSquareOrnamentInBlackSquare),
'🙬' => Ok(OrnamentalDingbats::LeftwardsRocket),
'🙭' => Ok(OrnamentalDingbats::UpwardsRocket),
'🙮' => Ok(OrnamentalDingbats::RightwardsRocket),
'🙯' => Ok(OrnamentalDingbats::DownwardsRocket),
'🙰' => Ok(OrnamentalDingbats::ScriptLigatureEtOrnament),
'🙱' => Ok(OrnamentalDingbats::HeavyScriptLigatureEtOrnament),
'🙲' => Ok(OrnamentalDingbats::LigatureOpenEtOrnament),
'🙳' => Ok(OrnamentalDingbats::HeavyLigatureOpenEtOrnament),
'🙴' => Ok(OrnamentalDingbats::HeavyAmpersandOrnament),
'🙵' => Ok(OrnamentalDingbats::SwashAmpersandOrnament),
'🙶' => Ok(OrnamentalDingbats::SansDashSerifHeavyDoubleTurnedCommaQuotationMarkOrnament),
'🙷' => Ok(OrnamentalDingbats::SansDashSerifHeavyDoubleCommaQuotationMarkOrnament),
'🙸' => Ok(OrnamentalDingbats::SansDashSerifHeavyLowDoubleCommaQuotationMarkOrnament),
'🙹' => Ok(OrnamentalDingbats::HeavyInterrobangOrnament),
'🙺' => Ok(OrnamentalDingbats::SansDashSerifInterrobangOrnament),
'🙻' => Ok(OrnamentalDingbats::HeavySansDashSerifInterrobangOrnament),
'🙼' => Ok(OrnamentalDingbats::VeryHeavySolidus),
'🙽' => Ok(OrnamentalDingbats::VeryHeavyReverseSolidus),
'🙾' => Ok(OrnamentalDingbats::CheckerBoard),
_ => Err(()),
}
}
}
impl Into<u32> for OrnamentalDingbats {
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 OrnamentalDingbats {
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 OrnamentalDingbats {
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 OrnamentalDingbats {
pub fn new() -> Self {
OrnamentalDingbats::NorthWestPointingLeaf
}
pub fn name(&self) -> String {
let s = std::format!("OrnamentalDingbats{:#?}", self);
string_morph::to_sentence_case(&s)
}
}