zugferd_code_lists/zugferd_2_3_2/
filename.rs1#![allow(non_camel_case_types)]
2
3#[cfg_attr(feature = "specta", derive(specta::Type))]
4#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
5#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone, Copy, Hash)]
6pub enum Filename {
7 TheHybridDocumentContainsAFacturXZugferdXmlFile,
11 TheHybridDocumentContainsAXrechnungXmlFile,
15 TheHybridDocumentContainsAnOrderXXmlFile,
17}
18
19impl std::fmt::Display for Filename {
20 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
21 write!(f, "{}", <Self as crate::Code>::code(*self))
22 }
23}
24
25impl std::str::FromStr for Filename {
26 type Err = crate::ParseError<Self>;
27 fn from_str(s: &str) -> Result<Self, Self::Err> {
28 <Self as crate::FromCode>::from_code(s)
29 .ok_or_else(|| crate::ParseError::<Self>::new(s.to_owned()))
30 }
31}
32
33impl crate::Code for Filename {
34 fn code(self) -> &'static str {
35 match self {
36 Filename::TheHybridDocumentContainsAFacturXZugferdXmlFile => "factur-x.xml",
37 Filename::TheHybridDocumentContainsAXrechnungXmlFile => "xrechnung.xml",
38 Filename::TheHybridDocumentContainsAnOrderXXmlFile => "order-x.xml",
39 }
40 }
41}
42
43impl crate::Description for Filename {
44 fn description(self) -> &'static str {
45 match self {
46 Filename::TheHybridDocumentContainsAFacturXZugferdXmlFile => {
47 "The hybrid document contains a Factur-X / ZUGFeRD XML-file"
48 }
49 Filename::TheHybridDocumentContainsAXrechnungXmlFile => {
50 "The hybrid document contains a XRechnung XML file"
51 }
52 Filename::TheHybridDocumentContainsAnOrderXXmlFile => {
53 "The hybrid document contains an Order-X XML file"
54 }
55 }
56 }
57}
58
59impl crate::FromCode for Filename {
60 fn from_code(code: &str) -> Option<Self>
61 where
62 Self: Sized,
63 {
64 match code {
65 "factur-x.xml" => Some(Filename::TheHybridDocumentContainsAFacturXZugferdXmlFile),
66 "xrechnung.xml" => Some(Filename::TheHybridDocumentContainsAXrechnungXmlFile),
67 "order-x.xml" => Some(Filename::TheHybridDocumentContainsAnOrderXXmlFile),
68 _ => None,
69 }
70 }
71}