mod constants {
pub const END_OF_PARAGRAPH: char = '܀';
pub const SUPRALINEAR_FULL_STOP: char = '܁';
pub const SUBLINEAR_FULL_STOP: char = '܂';
pub const SUPRALINEAR_COLON: char = '܃';
pub const SUBLINEAR_COLON: char = '܄';
pub const HORIZONTAL_COLON: char = '܅';
pub const COLON_SKEWED_LEFT: char = '܆';
pub const COLON_SKEWED_RIGHT: char = '܇';
pub const SUPRALINEAR_COLON_SKEWED_LEFT: char = '܈';
pub const SUBLINEAR_COLON_SKEWED_RIGHT: char = '܉';
pub const CONTRACTION: char = '܊';
pub const HARKLEAN_OBELUS: char = '܋';
pub const HARKLEAN_METOBELUS: char = '܌';
pub const HARKLEAN_ASTERISCUS: char = '܍';
pub const ABBREVIATION_MARK: char = '';
pub const LETTER_ALAPH: char = 'ܐ';
pub const LETTER_SUPERSCRIPT_ALAPH: char = 'ܑ';
pub const LETTER_BETH: char = 'ܒ';
pub const LETTER_GAMAL: char = 'ܓ';
pub const LETTER_GAMAL_GARSHUNI: char = 'ܔ';
pub const LETTER_DALATH: char = 'ܕ';
pub const LETTER_DOTLESS_DALATH_RISH: char = 'ܖ';
pub const LETTER_HE: char = 'ܗ';
pub const LETTER_WAW: char = 'ܘ';
pub const LETTER_ZAIN: char = 'ܙ';
pub const LETTER_HETH: char = 'ܚ';
pub const LETTER_TETH: char = 'ܛ';
pub const LETTER_TETH_GARSHUNI: char = 'ܜ';
pub const LETTER_YUDH: char = 'ܝ';
pub const LETTER_YUDH_HE: char = 'ܞ';
pub const LETTER_KAPH: char = 'ܟ';
pub const LETTER_LAMADH: char = 'ܠ';
pub const LETTER_MIM: char = 'ܡ';
pub const LETTER_NUN: char = 'ܢ';
pub const LETTER_SEMKATH: char = 'ܣ';
pub const LETTER_FINAL_SEMKATH: char = 'ܤ';
pub const LETTER_E: char = 'ܥ';
pub const LETTER_PE: char = 'ܦ';
pub const LETTER_REVERSED_PE: char = 'ܧ';
pub const LETTER_SADHE: char = 'ܨ';
pub const LETTER_QAPH: char = 'ܩ';
pub const LETTER_RISH: char = 'ܪ';
pub const LETTER_SHIN: char = 'ܫ';
pub const LETTER_TAW: char = 'ܬ';
pub const LETTER_PERSIAN_BHETH: char = 'ܭ';
pub const LETTER_PERSIAN_GHAMAL: char = 'ܮ';
pub const LETTER_PERSIAN_DHALATH: char = 'ܯ';
pub const PTHAHA_ABOVE: char = 'ܰ';
pub const PTHAHA_BELOW: char = 'ܱ';
pub const PTHAHA_DOTTED: char = 'ܲ';
pub const ZQAPHA_ABOVE: char = 'ܳ';
pub const ZQAPHA_BELOW: char = 'ܴ';
pub const ZQAPHA_DOTTED: char = 'ܵ';
pub const RBASA_ABOVE: char = 'ܶ';
pub const RBASA_BELOW: char = 'ܷ';
pub const DOTTED_ZLAMA_HORIZONTAL: char = 'ܸ';
pub const DOTTED_ZLAMA_ANGULAR: char = 'ܹ';
pub const HBASA_ABOVE: char = 'ܺ';
pub const HBASA_BELOW: char = 'ܻ';
pub const HBASA_DASH_ESASA_DOTTED: char = 'ܼ';
pub const ESASA_ABOVE: char = 'ܽ';
pub const ESASA_BELOW: char = 'ܾ';
pub const RWAHA: char = 'ܿ';
pub const FEMININE_DOT: char = '݀';
pub const QUSHSHAYA: char = '݁';
pub const RUKKAKHA: char = '݂';
pub const TWO_VERTICAL_DOTS_ABOVE: char = '݃';
pub const TWO_VERTICAL_DOTS_BELOW: char = '݄';
pub const THREE_DOTS_ABOVE: char = '݅';
pub const THREE_DOTS_BELOW: char = '݆';
pub const OBLIQUE_LINE_ABOVE: char = '݇';
pub const OBLIQUE_LINE_BELOW: char = '݈';
pub const MUSIC: char = '݉';
pub const BARREKH: char = '݊';
pub const LETTER_SOGDIAN_ZHAIN: char = 'ݍ';
pub const LETTER_SOGDIAN_KHAPH: char = 'ݎ';
}
#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum Syriac {
EndOfParagraph,
SupralinearFullStop,
SublinearFullStop,
SupralinearColon,
SublinearColon,
HorizontalColon,
ColonSkewedLeft,
ColonSkewedRight,
SupralinearColonSkewedLeft,
SublinearColonSkewedRight,
Contraction,
HarkleanObelus,
HarkleanMetobelus,
HarkleanAsteriscus,
AbbreviationMark,
LetterAlaph,
LetterSuperscriptAlaph,
LetterBeth,
LetterGamal,
LetterGamalGarshuni,
LetterDalath,
LetterDotlessDalathRish,
LetterHe,
LetterWaw,
LetterZain,
LetterHeth,
LetterTeth,
LetterTethGarshuni,
LetterYudh,
LetterYudhHe,
LetterKaph,
LetterLamadh,
LetterMim,
LetterNun,
LetterSemkath,
LetterFinalSemkath,
LetterE,
LetterPe,
LetterReversedPe,
LetterSadhe,
LetterQaph,
LetterRish,
LetterShin,
LetterTaw,
LetterPersianBheth,
LetterPersianGhamal,
LetterPersianDhalath,
PthahaAbove,
PthahaBelow,
PthahaDotted,
ZqaphaAbove,
ZqaphaBelow,
ZqaphaDotted,
RbasaAbove,
RbasaBelow,
DottedZlamaHorizontal,
DottedZlamaAngular,
HbasaAbove,
HbasaBelow,
HbasaDashEsasaDotted,
EsasaAbove,
EsasaBelow,
Rwaha,
FeminineDot,
Qushshaya,
Rukkakha,
TwoVerticalDotsAbove,
TwoVerticalDotsBelow,
ThreeDotsAbove,
ThreeDotsBelow,
ObliqueLineAbove,
ObliqueLineBelow,
Music,
Barrekh,
LetterSogdianZhain,
LetterSogdianKhaph,
}
impl Into<char> for Syriac {
fn into(self) -> char {
use constants::*;
match self {
Syriac::EndOfParagraph => END_OF_PARAGRAPH,
Syriac::SupralinearFullStop => SUPRALINEAR_FULL_STOP,
Syriac::SublinearFullStop => SUBLINEAR_FULL_STOP,
Syriac::SupralinearColon => SUPRALINEAR_COLON,
Syriac::SublinearColon => SUBLINEAR_COLON,
Syriac::HorizontalColon => HORIZONTAL_COLON,
Syriac::ColonSkewedLeft => COLON_SKEWED_LEFT,
Syriac::ColonSkewedRight => COLON_SKEWED_RIGHT,
Syriac::SupralinearColonSkewedLeft => SUPRALINEAR_COLON_SKEWED_LEFT,
Syriac::SublinearColonSkewedRight => SUBLINEAR_COLON_SKEWED_RIGHT,
Syriac::Contraction => CONTRACTION,
Syriac::HarkleanObelus => HARKLEAN_OBELUS,
Syriac::HarkleanMetobelus => HARKLEAN_METOBELUS,
Syriac::HarkleanAsteriscus => HARKLEAN_ASTERISCUS,
Syriac::AbbreviationMark => ABBREVIATION_MARK,
Syriac::LetterAlaph => LETTER_ALAPH,
Syriac::LetterSuperscriptAlaph => LETTER_SUPERSCRIPT_ALAPH,
Syriac::LetterBeth => LETTER_BETH,
Syriac::LetterGamal => LETTER_GAMAL,
Syriac::LetterGamalGarshuni => LETTER_GAMAL_GARSHUNI,
Syriac::LetterDalath => LETTER_DALATH,
Syriac::LetterDotlessDalathRish => LETTER_DOTLESS_DALATH_RISH,
Syriac::LetterHe => LETTER_HE,
Syriac::LetterWaw => LETTER_WAW,
Syriac::LetterZain => LETTER_ZAIN,
Syriac::LetterHeth => LETTER_HETH,
Syriac::LetterTeth => LETTER_TETH,
Syriac::LetterTethGarshuni => LETTER_TETH_GARSHUNI,
Syriac::LetterYudh => LETTER_YUDH,
Syriac::LetterYudhHe => LETTER_YUDH_HE,
Syriac::LetterKaph => LETTER_KAPH,
Syriac::LetterLamadh => LETTER_LAMADH,
Syriac::LetterMim => LETTER_MIM,
Syriac::LetterNun => LETTER_NUN,
Syriac::LetterSemkath => LETTER_SEMKATH,
Syriac::LetterFinalSemkath => LETTER_FINAL_SEMKATH,
Syriac::LetterE => LETTER_E,
Syriac::LetterPe => LETTER_PE,
Syriac::LetterReversedPe => LETTER_REVERSED_PE,
Syriac::LetterSadhe => LETTER_SADHE,
Syriac::LetterQaph => LETTER_QAPH,
Syriac::LetterRish => LETTER_RISH,
Syriac::LetterShin => LETTER_SHIN,
Syriac::LetterTaw => LETTER_TAW,
Syriac::LetterPersianBheth => LETTER_PERSIAN_BHETH,
Syriac::LetterPersianGhamal => LETTER_PERSIAN_GHAMAL,
Syriac::LetterPersianDhalath => LETTER_PERSIAN_DHALATH,
Syriac::PthahaAbove => PTHAHA_ABOVE,
Syriac::PthahaBelow => PTHAHA_BELOW,
Syriac::PthahaDotted => PTHAHA_DOTTED,
Syriac::ZqaphaAbove => ZQAPHA_ABOVE,
Syriac::ZqaphaBelow => ZQAPHA_BELOW,
Syriac::ZqaphaDotted => ZQAPHA_DOTTED,
Syriac::RbasaAbove => RBASA_ABOVE,
Syriac::RbasaBelow => RBASA_BELOW,
Syriac::DottedZlamaHorizontal => DOTTED_ZLAMA_HORIZONTAL,
Syriac::DottedZlamaAngular => DOTTED_ZLAMA_ANGULAR,
Syriac::HbasaAbove => HBASA_ABOVE,
Syriac::HbasaBelow => HBASA_BELOW,
Syriac::HbasaDashEsasaDotted => HBASA_DASH_ESASA_DOTTED,
Syriac::EsasaAbove => ESASA_ABOVE,
Syriac::EsasaBelow => ESASA_BELOW,
Syriac::Rwaha => RWAHA,
Syriac::FeminineDot => FEMININE_DOT,
Syriac::Qushshaya => QUSHSHAYA,
Syriac::Rukkakha => RUKKAKHA,
Syriac::TwoVerticalDotsAbove => TWO_VERTICAL_DOTS_ABOVE,
Syriac::TwoVerticalDotsBelow => TWO_VERTICAL_DOTS_BELOW,
Syriac::ThreeDotsAbove => THREE_DOTS_ABOVE,
Syriac::ThreeDotsBelow => THREE_DOTS_BELOW,
Syriac::ObliqueLineAbove => OBLIQUE_LINE_ABOVE,
Syriac::ObliqueLineBelow => OBLIQUE_LINE_BELOW,
Syriac::Music => MUSIC,
Syriac::Barrekh => BARREKH,
Syriac::LetterSogdianZhain => LETTER_SOGDIAN_ZHAIN,
Syriac::LetterSogdianKhaph => LETTER_SOGDIAN_KHAPH,
}
}
}
impl std::convert::TryFrom<char> for Syriac {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
use constants::*;
match c {
END_OF_PARAGRAPH => Ok(Syriac::EndOfParagraph),
SUPRALINEAR_FULL_STOP => Ok(Syriac::SupralinearFullStop),
SUBLINEAR_FULL_STOP => Ok(Syriac::SublinearFullStop),
SUPRALINEAR_COLON => Ok(Syriac::SupralinearColon),
SUBLINEAR_COLON => Ok(Syriac::SublinearColon),
HORIZONTAL_COLON => Ok(Syriac::HorizontalColon),
COLON_SKEWED_LEFT => Ok(Syriac::ColonSkewedLeft),
COLON_SKEWED_RIGHT => Ok(Syriac::ColonSkewedRight),
SUPRALINEAR_COLON_SKEWED_LEFT => Ok(Syriac::SupralinearColonSkewedLeft),
SUBLINEAR_COLON_SKEWED_RIGHT => Ok(Syriac::SublinearColonSkewedRight),
CONTRACTION => Ok(Syriac::Contraction),
HARKLEAN_OBELUS => Ok(Syriac::HarkleanObelus),
HARKLEAN_METOBELUS => Ok(Syriac::HarkleanMetobelus),
HARKLEAN_ASTERISCUS => Ok(Syriac::HarkleanAsteriscus),
ABBREVIATION_MARK => Ok(Syriac::AbbreviationMark),
LETTER_ALAPH => Ok(Syriac::LetterAlaph),
LETTER_SUPERSCRIPT_ALAPH => Ok(Syriac::LetterSuperscriptAlaph),
LETTER_BETH => Ok(Syriac::LetterBeth),
LETTER_GAMAL => Ok(Syriac::LetterGamal),
LETTER_GAMAL_GARSHUNI => Ok(Syriac::LetterGamalGarshuni),
LETTER_DALATH => Ok(Syriac::LetterDalath),
LETTER_DOTLESS_DALATH_RISH => Ok(Syriac::LetterDotlessDalathRish),
LETTER_HE => Ok(Syriac::LetterHe),
LETTER_WAW => Ok(Syriac::LetterWaw),
LETTER_ZAIN => Ok(Syriac::LetterZain),
LETTER_HETH => Ok(Syriac::LetterHeth),
LETTER_TETH => Ok(Syriac::LetterTeth),
LETTER_TETH_GARSHUNI => Ok(Syriac::LetterTethGarshuni),
LETTER_YUDH => Ok(Syriac::LetterYudh),
LETTER_YUDH_HE => Ok(Syriac::LetterYudhHe),
LETTER_KAPH => Ok(Syriac::LetterKaph),
LETTER_LAMADH => Ok(Syriac::LetterLamadh),
LETTER_MIM => Ok(Syriac::LetterMim),
LETTER_NUN => Ok(Syriac::LetterNun),
LETTER_SEMKATH => Ok(Syriac::LetterSemkath),
LETTER_FINAL_SEMKATH => Ok(Syriac::LetterFinalSemkath),
LETTER_E => Ok(Syriac::LetterE),
LETTER_PE => Ok(Syriac::LetterPe),
LETTER_REVERSED_PE => Ok(Syriac::LetterReversedPe),
LETTER_SADHE => Ok(Syriac::LetterSadhe),
LETTER_QAPH => Ok(Syriac::LetterQaph),
LETTER_RISH => Ok(Syriac::LetterRish),
LETTER_SHIN => Ok(Syriac::LetterShin),
LETTER_TAW => Ok(Syriac::LetterTaw),
LETTER_PERSIAN_BHETH => Ok(Syriac::LetterPersianBheth),
LETTER_PERSIAN_GHAMAL => Ok(Syriac::LetterPersianGhamal),
LETTER_PERSIAN_DHALATH => Ok(Syriac::LetterPersianDhalath),
PTHAHA_ABOVE => Ok(Syriac::PthahaAbove),
PTHAHA_BELOW => Ok(Syriac::PthahaBelow),
PTHAHA_DOTTED => Ok(Syriac::PthahaDotted),
ZQAPHA_ABOVE => Ok(Syriac::ZqaphaAbove),
ZQAPHA_BELOW => Ok(Syriac::ZqaphaBelow),
ZQAPHA_DOTTED => Ok(Syriac::ZqaphaDotted),
RBASA_ABOVE => Ok(Syriac::RbasaAbove),
RBASA_BELOW => Ok(Syriac::RbasaBelow),
DOTTED_ZLAMA_HORIZONTAL => Ok(Syriac::DottedZlamaHorizontal),
DOTTED_ZLAMA_ANGULAR => Ok(Syriac::DottedZlamaAngular),
HBASA_ABOVE => Ok(Syriac::HbasaAbove),
HBASA_BELOW => Ok(Syriac::HbasaBelow),
HBASA_DASH_ESASA_DOTTED => Ok(Syriac::HbasaDashEsasaDotted),
ESASA_ABOVE => Ok(Syriac::EsasaAbove),
ESASA_BELOW => Ok(Syriac::EsasaBelow),
RWAHA => Ok(Syriac::Rwaha),
FEMININE_DOT => Ok(Syriac::FeminineDot),
QUSHSHAYA => Ok(Syriac::Qushshaya),
RUKKAKHA => Ok(Syriac::Rukkakha),
TWO_VERTICAL_DOTS_ABOVE => Ok(Syriac::TwoVerticalDotsAbove),
TWO_VERTICAL_DOTS_BELOW => Ok(Syriac::TwoVerticalDotsBelow),
THREE_DOTS_ABOVE => Ok(Syriac::ThreeDotsAbove),
THREE_DOTS_BELOW => Ok(Syriac::ThreeDotsBelow),
OBLIQUE_LINE_ABOVE => Ok(Syriac::ObliqueLineAbove),
OBLIQUE_LINE_BELOW => Ok(Syriac::ObliqueLineBelow),
MUSIC => Ok(Syriac::Music),
BARREKH => Ok(Syriac::Barrekh),
LETTER_SOGDIAN_ZHAIN => Ok(Syriac::LetterSogdianZhain),
LETTER_SOGDIAN_KHAPH => Ok(Syriac::LetterSogdianKhaph),
_ => Err(()),
}
}
}
impl Into<u32> for Syriac {
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 Syriac {
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 Syriac {
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 Syriac {
pub fn new() -> Self {
Syriac::EndOfParagraph
}
pub fn name(&self) -> &str {
match self {
Syriac::EndOfParagraph => "syriac end of paragraph",
Syriac::SupralinearFullStop => "syriac supralinear full stop",
Syriac::SublinearFullStop => "syriac sublinear full stop",
Syriac::SupralinearColon => "syriac supralinear colon",
Syriac::SublinearColon => "syriac sublinear colon",
Syriac::HorizontalColon => "syriac horizontal colon",
Syriac::ColonSkewedLeft => "syriac colon skewed left",
Syriac::ColonSkewedRight => "syriac colon skewed right",
Syriac::SupralinearColonSkewedLeft => "syriac supralinear colon skewed left",
Syriac::SublinearColonSkewedRight => "syriac sublinear colon skewed right",
Syriac::Contraction => "syriac contraction",
Syriac::HarkleanObelus => "syriac harklean obelus",
Syriac::HarkleanMetobelus => "syriac harklean metobelus",
Syriac::HarkleanAsteriscus => "syriac harklean asteriscus",
Syriac::AbbreviationMark => "syriac abbreviation mark",
Syriac::LetterAlaph => "syriac letter alaph",
Syriac::LetterSuperscriptAlaph => "syriac letter superscript alaph",
Syriac::LetterBeth => "syriac letter beth",
Syriac::LetterGamal => "syriac letter gamal",
Syriac::LetterGamalGarshuni => "syriac letter gamal garshuni",
Syriac::LetterDalath => "syriac letter dalath",
Syriac::LetterDotlessDalathRish => "syriac letter dotless dalath rish",
Syriac::LetterHe => "syriac letter he",
Syriac::LetterWaw => "syriac letter waw",
Syriac::LetterZain => "syriac letter zain",
Syriac::LetterHeth => "syriac letter heth",
Syriac::LetterTeth => "syriac letter teth",
Syriac::LetterTethGarshuni => "syriac letter teth garshuni",
Syriac::LetterYudh => "syriac letter yudh",
Syriac::LetterYudhHe => "syriac letter yudh he",
Syriac::LetterKaph => "syriac letter kaph",
Syriac::LetterLamadh => "syriac letter lamadh",
Syriac::LetterMim => "syriac letter mim",
Syriac::LetterNun => "syriac letter nun",
Syriac::LetterSemkath => "syriac letter semkath",
Syriac::LetterFinalSemkath => "syriac letter final semkath",
Syriac::LetterE => "syriac letter e",
Syriac::LetterPe => "syriac letter pe",
Syriac::LetterReversedPe => "syriac letter reversed pe",
Syriac::LetterSadhe => "syriac letter sadhe",
Syriac::LetterQaph => "syriac letter qaph",
Syriac::LetterRish => "syriac letter rish",
Syriac::LetterShin => "syriac letter shin",
Syriac::LetterTaw => "syriac letter taw",
Syriac::LetterPersianBheth => "syriac letter persian bheth",
Syriac::LetterPersianGhamal => "syriac letter persian ghamal",
Syriac::LetterPersianDhalath => "syriac letter persian dhalath",
Syriac::PthahaAbove => "syriac pthaha above",
Syriac::PthahaBelow => "syriac pthaha below",
Syriac::PthahaDotted => "syriac pthaha dotted",
Syriac::ZqaphaAbove => "syriac zqapha above",
Syriac::ZqaphaBelow => "syriac zqapha below",
Syriac::ZqaphaDotted => "syriac zqapha dotted",
Syriac::RbasaAbove => "syriac rbasa above",
Syriac::RbasaBelow => "syriac rbasa below",
Syriac::DottedZlamaHorizontal => "syriac dotted zlama horizontal",
Syriac::DottedZlamaAngular => "syriac dotted zlama angular",
Syriac::HbasaAbove => "syriac hbasa above",
Syriac::HbasaBelow => "syriac hbasa below",
Syriac::HbasaDashEsasaDotted => "syriac hbasa-esasa dotted",
Syriac::EsasaAbove => "syriac esasa above",
Syriac::EsasaBelow => "syriac esasa below",
Syriac::Rwaha => "syriac rwaha",
Syriac::FeminineDot => "syriac feminine dot",
Syriac::Qushshaya => "syriac qushshaya",
Syriac::Rukkakha => "syriac rukkakha",
Syriac::TwoVerticalDotsAbove => "syriac two vertical dots above",
Syriac::TwoVerticalDotsBelow => "syriac two vertical dots below",
Syriac::ThreeDotsAbove => "syriac three dots above",
Syriac::ThreeDotsBelow => "syriac three dots below",
Syriac::ObliqueLineAbove => "syriac oblique line above",
Syriac::ObliqueLineBelow => "syriac oblique line below",
Syriac::Music => "syriac music",
Syriac::Barrekh => "syriac barrekh",
Syriac::LetterSogdianZhain => "syriac letter sogdian zhain",
Syriac::LetterSogdianKhaph => "syriac letter sogdian khaph",
}
}
}