mod constants {
pub const COPTIC_EPACT_THOUSANDS_MARK: char = '𐋠';
pub const COPTIC_EPACT_DIGIT_ONE: char = '𐋡';
pub const COPTIC_EPACT_DIGIT_TWO: char = '𐋢';
pub const COPTIC_EPACT_DIGIT_THREE: char = '𐋣';
pub const COPTIC_EPACT_DIGIT_FOUR: char = '𐋤';
pub const COPTIC_EPACT_DIGIT_FIVE: char = '𐋥';
pub const COPTIC_EPACT_DIGIT_SIX: char = '𐋦';
pub const COPTIC_EPACT_DIGIT_SEVEN: char = '𐋧';
pub const COPTIC_EPACT_DIGIT_EIGHT: char = '𐋨';
pub const COPTIC_EPACT_DIGIT_NINE: char = '𐋩';
pub const COPTIC_EPACT_NUMBER_TEN: char = '𐋪';
pub const COPTIC_EPACT_NUMBER_TWENTY: char = '𐋫';
pub const COPTIC_EPACT_NUMBER_THIRTY: char = '𐋬';
pub const COPTIC_EPACT_NUMBER_FORTY: char = '𐋭';
pub const COPTIC_EPACT_NUMBER_FIFTY: char = '𐋮';
pub const COPTIC_EPACT_NUMBER_SIXTY: char = '𐋯';
pub const COPTIC_EPACT_NUMBER_SEVENTY: char = '𐋰';
pub const COPTIC_EPACT_NUMBER_EIGHTY: char = '𐋱';
pub const COPTIC_EPACT_NUMBER_NINETY: char = '𐋲';
pub const COPTIC_EPACT_NUMBER_ONE_HUNDRED: char = '𐋳';
pub const COPTIC_EPACT_NUMBER_TWO_HUNDRED: char = '𐋴';
pub const COPTIC_EPACT_NUMBER_THREE_HUNDRED: char = '𐋵';
pub const COPTIC_EPACT_NUMBER_FOUR_HUNDRED: char = '𐋶';
pub const COPTIC_EPACT_NUMBER_FIVE_HUNDRED: char = '𐋷';
pub const COPTIC_EPACT_NUMBER_SIX_HUNDRED: char = '𐋸';
pub const COPTIC_EPACT_NUMBER_SEVEN_HUNDRED: char = '𐋹';
pub const COPTIC_EPACT_NUMBER_EIGHT_HUNDRED: char = '𐋺';
pub const COPTIC_EPACT_NUMBER_NINE_HUNDRED: char = '𐋻';
}
#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum CopticEpactNumbers {
CopticEpactThousandsMark,
CopticEpactDigitOne,
CopticEpactDigitTwo,
CopticEpactDigitThree,
CopticEpactDigitFour,
CopticEpactDigitFive,
CopticEpactDigitSix,
CopticEpactDigitSeven,
CopticEpactDigitEight,
CopticEpactDigitNine,
CopticEpactNumberTen,
CopticEpactNumberTwenty,
CopticEpactNumberThirty,
CopticEpactNumberForty,
CopticEpactNumberFifty,
CopticEpactNumberSixty,
CopticEpactNumberSeventy,
CopticEpactNumberEighty,
CopticEpactNumberNinety,
CopticEpactNumberOneHundred,
CopticEpactNumberTwoHundred,
CopticEpactNumberThreeHundred,
CopticEpactNumberFourHundred,
CopticEpactNumberFiveHundred,
CopticEpactNumberSixHundred,
CopticEpactNumberSevenHundred,
CopticEpactNumberEightHundred,
CopticEpactNumberNineHundred,
}
impl Into<char> for CopticEpactNumbers {
fn into(self) -> char {
use constants::*;
match self {
CopticEpactNumbers::CopticEpactThousandsMark => COPTIC_EPACT_THOUSANDS_MARK,
CopticEpactNumbers::CopticEpactDigitOne => COPTIC_EPACT_DIGIT_ONE,
CopticEpactNumbers::CopticEpactDigitTwo => COPTIC_EPACT_DIGIT_TWO,
CopticEpactNumbers::CopticEpactDigitThree => COPTIC_EPACT_DIGIT_THREE,
CopticEpactNumbers::CopticEpactDigitFour => COPTIC_EPACT_DIGIT_FOUR,
CopticEpactNumbers::CopticEpactDigitFive => COPTIC_EPACT_DIGIT_FIVE,
CopticEpactNumbers::CopticEpactDigitSix => COPTIC_EPACT_DIGIT_SIX,
CopticEpactNumbers::CopticEpactDigitSeven => COPTIC_EPACT_DIGIT_SEVEN,
CopticEpactNumbers::CopticEpactDigitEight => COPTIC_EPACT_DIGIT_EIGHT,
CopticEpactNumbers::CopticEpactDigitNine => COPTIC_EPACT_DIGIT_NINE,
CopticEpactNumbers::CopticEpactNumberTen => COPTIC_EPACT_NUMBER_TEN,
CopticEpactNumbers::CopticEpactNumberTwenty => COPTIC_EPACT_NUMBER_TWENTY,
CopticEpactNumbers::CopticEpactNumberThirty => COPTIC_EPACT_NUMBER_THIRTY,
CopticEpactNumbers::CopticEpactNumberForty => COPTIC_EPACT_NUMBER_FORTY,
CopticEpactNumbers::CopticEpactNumberFifty => COPTIC_EPACT_NUMBER_FIFTY,
CopticEpactNumbers::CopticEpactNumberSixty => COPTIC_EPACT_NUMBER_SIXTY,
CopticEpactNumbers::CopticEpactNumberSeventy => COPTIC_EPACT_NUMBER_SEVENTY,
CopticEpactNumbers::CopticEpactNumberEighty => COPTIC_EPACT_NUMBER_EIGHTY,
CopticEpactNumbers::CopticEpactNumberNinety => COPTIC_EPACT_NUMBER_NINETY,
CopticEpactNumbers::CopticEpactNumberOneHundred => COPTIC_EPACT_NUMBER_ONE_HUNDRED,
CopticEpactNumbers::CopticEpactNumberTwoHundred => COPTIC_EPACT_NUMBER_TWO_HUNDRED,
CopticEpactNumbers::CopticEpactNumberThreeHundred => COPTIC_EPACT_NUMBER_THREE_HUNDRED,
CopticEpactNumbers::CopticEpactNumberFourHundred => COPTIC_EPACT_NUMBER_FOUR_HUNDRED,
CopticEpactNumbers::CopticEpactNumberFiveHundred => COPTIC_EPACT_NUMBER_FIVE_HUNDRED,
CopticEpactNumbers::CopticEpactNumberSixHundred => COPTIC_EPACT_NUMBER_SIX_HUNDRED,
CopticEpactNumbers::CopticEpactNumberSevenHundred => COPTIC_EPACT_NUMBER_SEVEN_HUNDRED,
CopticEpactNumbers::CopticEpactNumberEightHundred => COPTIC_EPACT_NUMBER_EIGHT_HUNDRED,
CopticEpactNumbers::CopticEpactNumberNineHundred => COPTIC_EPACT_NUMBER_NINE_HUNDRED,
}
}
}
impl std::convert::TryFrom<char> for CopticEpactNumbers {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
use constants::*;
match c {
COPTIC_EPACT_THOUSANDS_MARK => Ok(CopticEpactNumbers::CopticEpactThousandsMark),
COPTIC_EPACT_DIGIT_ONE => Ok(CopticEpactNumbers::CopticEpactDigitOne),
COPTIC_EPACT_DIGIT_TWO => Ok(CopticEpactNumbers::CopticEpactDigitTwo),
COPTIC_EPACT_DIGIT_THREE => Ok(CopticEpactNumbers::CopticEpactDigitThree),
COPTIC_EPACT_DIGIT_FOUR => Ok(CopticEpactNumbers::CopticEpactDigitFour),
COPTIC_EPACT_DIGIT_FIVE => Ok(CopticEpactNumbers::CopticEpactDigitFive),
COPTIC_EPACT_DIGIT_SIX => Ok(CopticEpactNumbers::CopticEpactDigitSix),
COPTIC_EPACT_DIGIT_SEVEN => Ok(CopticEpactNumbers::CopticEpactDigitSeven),
COPTIC_EPACT_DIGIT_EIGHT => Ok(CopticEpactNumbers::CopticEpactDigitEight),
COPTIC_EPACT_DIGIT_NINE => Ok(CopticEpactNumbers::CopticEpactDigitNine),
COPTIC_EPACT_NUMBER_TEN => Ok(CopticEpactNumbers::CopticEpactNumberTen),
COPTIC_EPACT_NUMBER_TWENTY => Ok(CopticEpactNumbers::CopticEpactNumberTwenty),
COPTIC_EPACT_NUMBER_THIRTY => Ok(CopticEpactNumbers::CopticEpactNumberThirty),
COPTIC_EPACT_NUMBER_FORTY => Ok(CopticEpactNumbers::CopticEpactNumberForty),
COPTIC_EPACT_NUMBER_FIFTY => Ok(CopticEpactNumbers::CopticEpactNumberFifty),
COPTIC_EPACT_NUMBER_SIXTY => Ok(CopticEpactNumbers::CopticEpactNumberSixty),
COPTIC_EPACT_NUMBER_SEVENTY => Ok(CopticEpactNumbers::CopticEpactNumberSeventy),
COPTIC_EPACT_NUMBER_EIGHTY => Ok(CopticEpactNumbers::CopticEpactNumberEighty),
COPTIC_EPACT_NUMBER_NINETY => Ok(CopticEpactNumbers::CopticEpactNumberNinety),
COPTIC_EPACT_NUMBER_ONE_HUNDRED => Ok(CopticEpactNumbers::CopticEpactNumberOneHundred),
COPTIC_EPACT_NUMBER_TWO_HUNDRED => Ok(CopticEpactNumbers::CopticEpactNumberTwoHundred),
COPTIC_EPACT_NUMBER_THREE_HUNDRED => Ok(CopticEpactNumbers::CopticEpactNumberThreeHundred),
COPTIC_EPACT_NUMBER_FOUR_HUNDRED => Ok(CopticEpactNumbers::CopticEpactNumberFourHundred),
COPTIC_EPACT_NUMBER_FIVE_HUNDRED => Ok(CopticEpactNumbers::CopticEpactNumberFiveHundred),
COPTIC_EPACT_NUMBER_SIX_HUNDRED => Ok(CopticEpactNumbers::CopticEpactNumberSixHundred),
COPTIC_EPACT_NUMBER_SEVEN_HUNDRED => Ok(CopticEpactNumbers::CopticEpactNumberSevenHundred),
COPTIC_EPACT_NUMBER_EIGHT_HUNDRED => Ok(CopticEpactNumbers::CopticEpactNumberEightHundred),
COPTIC_EPACT_NUMBER_NINE_HUNDRED => Ok(CopticEpactNumbers::CopticEpactNumberNineHundred),
_ => Err(()),
}
}
}
impl Into<u32> for CopticEpactNumbers {
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 CopticEpactNumbers {
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 CopticEpactNumbers {
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 CopticEpactNumbers {
pub fn new() -> Self {
CopticEpactNumbers::CopticEpactThousandsMark
}
pub fn name(&self) -> &str {
match self {
CopticEpactNumbers::CopticEpactThousandsMark => "coptic epact thousands mark",
CopticEpactNumbers::CopticEpactDigitOne => "coptic epact digit one",
CopticEpactNumbers::CopticEpactDigitTwo => "coptic epact digit two",
CopticEpactNumbers::CopticEpactDigitThree => "coptic epact digit three",
CopticEpactNumbers::CopticEpactDigitFour => "coptic epact digit four",
CopticEpactNumbers::CopticEpactDigitFive => "coptic epact digit five",
CopticEpactNumbers::CopticEpactDigitSix => "coptic epact digit six",
CopticEpactNumbers::CopticEpactDigitSeven => "coptic epact digit seven",
CopticEpactNumbers::CopticEpactDigitEight => "coptic epact digit eight",
CopticEpactNumbers::CopticEpactDigitNine => "coptic epact digit nine",
CopticEpactNumbers::CopticEpactNumberTen => "coptic epact number ten",
CopticEpactNumbers::CopticEpactNumberTwenty => "coptic epact number twenty",
CopticEpactNumbers::CopticEpactNumberThirty => "coptic epact number thirty",
CopticEpactNumbers::CopticEpactNumberForty => "coptic epact number forty",
CopticEpactNumbers::CopticEpactNumberFifty => "coptic epact number fifty",
CopticEpactNumbers::CopticEpactNumberSixty => "coptic epact number sixty",
CopticEpactNumbers::CopticEpactNumberSeventy => "coptic epact number seventy",
CopticEpactNumbers::CopticEpactNumberEighty => "coptic epact number eighty",
CopticEpactNumbers::CopticEpactNumberNinety => "coptic epact number ninety",
CopticEpactNumbers::CopticEpactNumberOneHundred => "coptic epact number one hundred",
CopticEpactNumbers::CopticEpactNumberTwoHundred => "coptic epact number two hundred",
CopticEpactNumbers::CopticEpactNumberThreeHundred => "coptic epact number three hundred",
CopticEpactNumbers::CopticEpactNumberFourHundred => "coptic epact number four hundred",
CopticEpactNumbers::CopticEpactNumberFiveHundred => "coptic epact number five hundred",
CopticEpactNumbers::CopticEpactNumberSixHundred => "coptic epact number six hundred",
CopticEpactNumbers::CopticEpactNumberSevenHundred => "coptic epact number seven hundred",
CopticEpactNumbers::CopticEpactNumberEightHundred => "coptic epact number eight hundred",
CopticEpactNumbers::CopticEpactNumberNineHundred => "coptic epact number nine hundred",
}
}
}