#![allow(non_camel_case_types)]
#[cfg_attr(feature = "specta", derive(specta::Type))]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone, Copy, Hash)]
pub enum HybridConformance {
TheIncludedDocumentUsesAMinimumProfile,
TheIncludedDocumentUsesABasicWithoutLinesProfile,
TheIncludedDocumentUsesABasicProfile,
TheIncludedDocumentUsesAComfortProfile,
TheIncludedDocumentUsesAEn16931Profile,
TheIncludedDocumentUsesAComfortProfile_Dup,
TheIncludedDocumentUsesAnXrechnungProfile,
}
impl std::fmt::Display for HybridConformance {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{}", <Self as crate::Code>::code(*self))
}
}
impl std::str::FromStr for HybridConformance {
type Err = crate::ParseError<Self>;
fn from_str(s: &str) -> Result<Self, Self::Err> {
<Self as crate::FromCode>::from_code(s)
.ok_or_else(|| crate::ParseError::<Self>::new(s.to_owned()))
}
}
impl crate::Code for HybridConformance {
fn code(self) -> &'static str {
match self {
HybridConformance::TheIncludedDocumentUsesAMinimumProfile => "MINIMUM",
HybridConformance::TheIncludedDocumentUsesABasicWithoutLinesProfile => "BASIC WL",
HybridConformance::TheIncludedDocumentUsesABasicProfile => "BASIC",
HybridConformance::TheIncludedDocumentUsesAComfortProfile => "COMFORT",
HybridConformance::TheIncludedDocumentUsesAEn16931Profile => "EN 16931",
HybridConformance::TheIncludedDocumentUsesAComfortProfile_Dup => "EXTENDED",
HybridConformance::TheIncludedDocumentUsesAnXrechnungProfile => "XRECHNUNG",
}
}
}
impl crate::Description for HybridConformance {
fn description(self) -> &'static str {
match self {
HybridConformance::TheIncludedDocumentUsesAMinimumProfile => {
"The included document uses a MINIMUM profile"
}
HybridConformance::TheIncludedDocumentUsesABasicWithoutLinesProfile => {
"The included document uses a Basic Without Lines profile"
}
HybridConformance::TheIncludedDocumentUsesABasicProfile => {
"The included document uses a Basic profile"
}
HybridConformance::TheIncludedDocumentUsesAComfortProfile => {
"The included document uses a Comfort profile"
}
HybridConformance::TheIncludedDocumentUsesAEn16931Profile => {
"The included document uses a EN 16931 profile"
}
HybridConformance::TheIncludedDocumentUsesAComfortProfile_Dup => {
"The included document uses a Comfort profile"
}
HybridConformance::TheIncludedDocumentUsesAnXrechnungProfile => {
"The included document uses an XRECHNUNG profile"
}
}
}
}
impl crate::FromCode for HybridConformance {
fn from_code(code: &str) -> Option<Self>
where
Self: Sized,
{
match code {
"MINIMUM" => Some(HybridConformance::TheIncludedDocumentUsesAMinimumProfile),
"BASIC WL" => Some(HybridConformance::TheIncludedDocumentUsesABasicWithoutLinesProfile),
"BASIC" => Some(HybridConformance::TheIncludedDocumentUsesABasicProfile),
"COMFORT" => Some(HybridConformance::TheIncludedDocumentUsesAComfortProfile),
"EN 16931" => Some(HybridConformance::TheIncludedDocumentUsesAEn16931Profile),
"EXTENDED" => Some(HybridConformance::TheIncludedDocumentUsesAComfortProfile_Dup),
"XRECHNUNG" => Some(HybridConformance::TheIncludedDocumentUsesAnXrechnungProfile),
_ => None,
}
}
}