mod constants {
pub const SIGN_PEDESTRIAN: char = '𐇐';
pub const SIGN_PLUMED_HEAD: char = '𐇑';
pub const SIGN_TATTOOED_HEAD: char = '𐇒';
pub const SIGN_CAPTIVE: char = '𐇓';
pub const SIGN_CHILD: char = '𐇔';
pub const SIGN_WOMAN: char = '𐇕';
pub const SIGN_HELMET: char = '𐇖';
pub const SIGN_GAUNTLET: char = '𐇗';
pub const SIGN_TIARA: char = '𐇘';
pub const SIGN_ARROW: char = '𐇙';
pub const SIGN_BOW: char = '𐇚';
pub const SIGN_SHIELD: char = '𐇛';
pub const SIGN_CLUB: char = '𐇜';
pub const SIGN_MANACLES: char = '𐇝';
pub const SIGN_MATTOCK: char = '𐇞';
pub const SIGN_SAW: char = '𐇟';
pub const SIGN_LID: char = '𐇠';
pub const SIGN_BOOMERANG: char = '𐇡';
pub const SIGN_CARPENTRY_PLANE: char = '𐇢';
pub const SIGN_DOLIUM: char = '𐇣';
pub const SIGN_COMB: char = '𐇤';
pub const SIGN_SLING: char = '𐇥';
pub const SIGN_COLUMN: char = '𐇦';
pub const SIGN_BEEHIVE: char = '𐇧';
pub const SIGN_SHIP: char = '𐇨';
pub const SIGN_HORN: char = '𐇩';
pub const SIGN_HIDE: char = '𐇪';
pub const SIGN_BULLS_LEG: char = '𐇫';
pub const SIGN_CAT: char = '𐇬';
pub const SIGN_RAM: char = '𐇭';
pub const SIGN_EAGLE: char = '𐇮';
pub const SIGN_DOVE: char = '𐇯';
pub const SIGN_TUNNY: char = '𐇰';
pub const SIGN_BEE: char = '𐇱';
pub const SIGN_PLANE_TREE: char = '𐇲';
pub const SIGN_VINE: char = '𐇳';
pub const SIGN_PAPYRUS: char = '𐇴';
pub const SIGN_ROSETTE: char = '𐇵';
pub const SIGN_LILY: char = '𐇶';
pub const SIGN_OX_BACK: char = '𐇷';
pub const SIGN_FLUTE: char = '𐇸';
pub const SIGN_GRATER: char = '𐇹';
pub const SIGN_STRAINER: char = '𐇺';
pub const SIGN_SMALL_AXE: char = '𐇻';
pub const SIGN_WAVY_BAND: char = '𐇼';
pub const SIGN_COMBINING_OBLIQUE_STROKE: char = '𐇽';
}
#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum PhaistosDisc {
SignPedestrian,
SignPlumedHead,
SignTattooedHead,
SignCaptive,
SignChild,
SignWoman,
SignHelmet,
SignGauntlet,
SignTiara,
SignArrow,
SignBow,
SignShield,
SignClub,
SignManacles,
SignMattock,
SignSaw,
SignLid,
SignBoomerang,
SignCarpentryPlane,
SignDolium,
SignComb,
SignSling,
SignColumn,
SignBeehive,
SignShip,
SignHorn,
SignHide,
SignBullsLeg,
SignCat,
SignRam,
SignEagle,
SignDove,
SignTunny,
SignBee,
SignPlaneTree,
SignVine,
SignPapyrus,
SignRosette,
SignLily,
SignOxBack,
SignFlute,
SignGrater,
SignStrainer,
SignSmallAxe,
SignWavyBand,
SignCombiningObliqueStroke,
}
impl Into<char> for PhaistosDisc {
fn into(self) -> char {
use constants::*;
match self {
PhaistosDisc::SignPedestrian => SIGN_PEDESTRIAN,
PhaistosDisc::SignPlumedHead => SIGN_PLUMED_HEAD,
PhaistosDisc::SignTattooedHead => SIGN_TATTOOED_HEAD,
PhaistosDisc::SignCaptive => SIGN_CAPTIVE,
PhaistosDisc::SignChild => SIGN_CHILD,
PhaistosDisc::SignWoman => SIGN_WOMAN,
PhaistosDisc::SignHelmet => SIGN_HELMET,
PhaistosDisc::SignGauntlet => SIGN_GAUNTLET,
PhaistosDisc::SignTiara => SIGN_TIARA,
PhaistosDisc::SignArrow => SIGN_ARROW,
PhaistosDisc::SignBow => SIGN_BOW,
PhaistosDisc::SignShield => SIGN_SHIELD,
PhaistosDisc::SignClub => SIGN_CLUB,
PhaistosDisc::SignManacles => SIGN_MANACLES,
PhaistosDisc::SignMattock => SIGN_MATTOCK,
PhaistosDisc::SignSaw => SIGN_SAW,
PhaistosDisc::SignLid => SIGN_LID,
PhaistosDisc::SignBoomerang => SIGN_BOOMERANG,
PhaistosDisc::SignCarpentryPlane => SIGN_CARPENTRY_PLANE,
PhaistosDisc::SignDolium => SIGN_DOLIUM,
PhaistosDisc::SignComb => SIGN_COMB,
PhaistosDisc::SignSling => SIGN_SLING,
PhaistosDisc::SignColumn => SIGN_COLUMN,
PhaistosDisc::SignBeehive => SIGN_BEEHIVE,
PhaistosDisc::SignShip => SIGN_SHIP,
PhaistosDisc::SignHorn => SIGN_HORN,
PhaistosDisc::SignHide => SIGN_HIDE,
PhaistosDisc::SignBullsLeg => SIGN_BULLS_LEG,
PhaistosDisc::SignCat => SIGN_CAT,
PhaistosDisc::SignRam => SIGN_RAM,
PhaistosDisc::SignEagle => SIGN_EAGLE,
PhaistosDisc::SignDove => SIGN_DOVE,
PhaistosDisc::SignTunny => SIGN_TUNNY,
PhaistosDisc::SignBee => SIGN_BEE,
PhaistosDisc::SignPlaneTree => SIGN_PLANE_TREE,
PhaistosDisc::SignVine => SIGN_VINE,
PhaistosDisc::SignPapyrus => SIGN_PAPYRUS,
PhaistosDisc::SignRosette => SIGN_ROSETTE,
PhaistosDisc::SignLily => SIGN_LILY,
PhaistosDisc::SignOxBack => SIGN_OX_BACK,
PhaistosDisc::SignFlute => SIGN_FLUTE,
PhaistosDisc::SignGrater => SIGN_GRATER,
PhaistosDisc::SignStrainer => SIGN_STRAINER,
PhaistosDisc::SignSmallAxe => SIGN_SMALL_AXE,
PhaistosDisc::SignWavyBand => SIGN_WAVY_BAND,
PhaistosDisc::SignCombiningObliqueStroke => SIGN_COMBINING_OBLIQUE_STROKE,
}
}
}
impl std::convert::TryFrom<char> for PhaistosDisc {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
use constants::*;
match c {
SIGN_PEDESTRIAN => Ok(PhaistosDisc::SignPedestrian),
SIGN_PLUMED_HEAD => Ok(PhaistosDisc::SignPlumedHead),
SIGN_TATTOOED_HEAD => Ok(PhaistosDisc::SignTattooedHead),
SIGN_CAPTIVE => Ok(PhaistosDisc::SignCaptive),
SIGN_CHILD => Ok(PhaistosDisc::SignChild),
SIGN_WOMAN => Ok(PhaistosDisc::SignWoman),
SIGN_HELMET => Ok(PhaistosDisc::SignHelmet),
SIGN_GAUNTLET => Ok(PhaistosDisc::SignGauntlet),
SIGN_TIARA => Ok(PhaistosDisc::SignTiara),
SIGN_ARROW => Ok(PhaistosDisc::SignArrow),
SIGN_BOW => Ok(PhaistosDisc::SignBow),
SIGN_SHIELD => Ok(PhaistosDisc::SignShield),
SIGN_CLUB => Ok(PhaistosDisc::SignClub),
SIGN_MANACLES => Ok(PhaistosDisc::SignManacles),
SIGN_MATTOCK => Ok(PhaistosDisc::SignMattock),
SIGN_SAW => Ok(PhaistosDisc::SignSaw),
SIGN_LID => Ok(PhaistosDisc::SignLid),
SIGN_BOOMERANG => Ok(PhaistosDisc::SignBoomerang),
SIGN_CARPENTRY_PLANE => Ok(PhaistosDisc::SignCarpentryPlane),
SIGN_DOLIUM => Ok(PhaistosDisc::SignDolium),
SIGN_COMB => Ok(PhaistosDisc::SignComb),
SIGN_SLING => Ok(PhaistosDisc::SignSling),
SIGN_COLUMN => Ok(PhaistosDisc::SignColumn),
SIGN_BEEHIVE => Ok(PhaistosDisc::SignBeehive),
SIGN_SHIP => Ok(PhaistosDisc::SignShip),
SIGN_HORN => Ok(PhaistosDisc::SignHorn),
SIGN_HIDE => Ok(PhaistosDisc::SignHide),
SIGN_BULLS_LEG => Ok(PhaistosDisc::SignBullsLeg),
SIGN_CAT => Ok(PhaistosDisc::SignCat),
SIGN_RAM => Ok(PhaistosDisc::SignRam),
SIGN_EAGLE => Ok(PhaistosDisc::SignEagle),
SIGN_DOVE => Ok(PhaistosDisc::SignDove),
SIGN_TUNNY => Ok(PhaistosDisc::SignTunny),
SIGN_BEE => Ok(PhaistosDisc::SignBee),
SIGN_PLANE_TREE => Ok(PhaistosDisc::SignPlaneTree),
SIGN_VINE => Ok(PhaistosDisc::SignVine),
SIGN_PAPYRUS => Ok(PhaistosDisc::SignPapyrus),
SIGN_ROSETTE => Ok(PhaistosDisc::SignRosette),
SIGN_LILY => Ok(PhaistosDisc::SignLily),
SIGN_OX_BACK => Ok(PhaistosDisc::SignOxBack),
SIGN_FLUTE => Ok(PhaistosDisc::SignFlute),
SIGN_GRATER => Ok(PhaistosDisc::SignGrater),
SIGN_STRAINER => Ok(PhaistosDisc::SignStrainer),
SIGN_SMALL_AXE => Ok(PhaistosDisc::SignSmallAxe),
SIGN_WAVY_BAND => Ok(PhaistosDisc::SignWavyBand),
SIGN_COMBINING_OBLIQUE_STROKE => Ok(PhaistosDisc::SignCombiningObliqueStroke),
_ => Err(()),
}
}
}
impl Into<u32> for PhaistosDisc {
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 PhaistosDisc {
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 PhaistosDisc {
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 PhaistosDisc {
pub fn new() -> Self {
PhaistosDisc::SignPedestrian
}
pub fn name(&self) -> &str {
match self {
PhaistosDisc::SignPedestrian => "phaistos disc sign pedestrian",
PhaistosDisc::SignPlumedHead => "phaistos disc sign plumed head",
PhaistosDisc::SignTattooedHead => "phaistos disc sign tattooed head",
PhaistosDisc::SignCaptive => "phaistos disc sign captive",
PhaistosDisc::SignChild => "phaistos disc sign child",
PhaistosDisc::SignWoman => "phaistos disc sign woman",
PhaistosDisc::SignHelmet => "phaistos disc sign helmet",
PhaistosDisc::SignGauntlet => "phaistos disc sign gauntlet",
PhaistosDisc::SignTiara => "phaistos disc sign tiara",
PhaistosDisc::SignArrow => "phaistos disc sign arrow",
PhaistosDisc::SignBow => "phaistos disc sign bow",
PhaistosDisc::SignShield => "phaistos disc sign shield",
PhaistosDisc::SignClub => "phaistos disc sign club",
PhaistosDisc::SignManacles => "phaistos disc sign manacles",
PhaistosDisc::SignMattock => "phaistos disc sign mattock",
PhaistosDisc::SignSaw => "phaistos disc sign saw",
PhaistosDisc::SignLid => "phaistos disc sign lid",
PhaistosDisc::SignBoomerang => "phaistos disc sign boomerang",
PhaistosDisc::SignCarpentryPlane => "phaistos disc sign carpentry plane",
PhaistosDisc::SignDolium => "phaistos disc sign dolium",
PhaistosDisc::SignComb => "phaistos disc sign comb",
PhaistosDisc::SignSling => "phaistos disc sign sling",
PhaistosDisc::SignColumn => "phaistos disc sign column",
PhaistosDisc::SignBeehive => "phaistos disc sign beehive",
PhaistosDisc::SignShip => "phaistos disc sign ship",
PhaistosDisc::SignHorn => "phaistos disc sign horn",
PhaistosDisc::SignHide => "phaistos disc sign hide",
PhaistosDisc::SignBullsLeg => "phaistos disc sign bulls leg",
PhaistosDisc::SignCat => "phaistos disc sign cat",
PhaistosDisc::SignRam => "phaistos disc sign ram",
PhaistosDisc::SignEagle => "phaistos disc sign eagle",
PhaistosDisc::SignDove => "phaistos disc sign dove",
PhaistosDisc::SignTunny => "phaistos disc sign tunny",
PhaistosDisc::SignBee => "phaistos disc sign bee",
PhaistosDisc::SignPlaneTree => "phaistos disc sign plane tree",
PhaistosDisc::SignVine => "phaistos disc sign vine",
PhaistosDisc::SignPapyrus => "phaistos disc sign papyrus",
PhaistosDisc::SignRosette => "phaistos disc sign rosette",
PhaistosDisc::SignLily => "phaistos disc sign lily",
PhaistosDisc::SignOxBack => "phaistos disc sign ox back",
PhaistosDisc::SignFlute => "phaistos disc sign flute",
PhaistosDisc::SignGrater => "phaistos disc sign grater",
PhaistosDisc::SignStrainer => "phaistos disc sign strainer",
PhaistosDisc::SignSmallAxe => "phaistos disc sign small axe",
PhaistosDisc::SignWavyBand => "phaistos disc sign wavy band",
PhaistosDisc::SignCombiningObliqueStroke => "phaistos disc sign combining oblique stroke",
}
}
}