zugferd_code_lists/zugferd_2_3_3/
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 = ();
27 fn from_str(s: &str) -> Result<Self, Self::Err> {
28 <Self as crate::FromCode>::from_code(s).ok_or(())
29 }
30}
31
32impl crate::Code for Filename {
33 fn code(self) -> &'static str {
34 match self {
35 Filename::TheHybridDocumentContainsAFacturXZugferdXmlFile => "factur-x.xml",
36 Filename::TheHybridDocumentContainsAXrechnungXmlFile => "xrechnung.xml",
37 Filename::TheHybridDocumentContainsAnOrderXXmlFile => "order-x.xml",
38 }
39 }
40}
41
42impl crate::Description for Filename {
43 fn description(self) -> &'static str {
44 match self {
45 Filename::TheHybridDocumentContainsAFacturXZugferdXmlFile => {
46 "The hybrid document contains a Factur-X / ZUGFeRD XML-file"
47 }
48 Filename::TheHybridDocumentContainsAXrechnungXmlFile => {
49 "The hybrid document contains a XRechnung XML file"
50 }
51 Filename::TheHybridDocumentContainsAnOrderXXmlFile => {
52 "The hybrid document contains an Order-X XML file"
53 }
54 }
55 }
56}
57
58impl crate::FromCode for Filename {
59 fn from_code(code: &str) -> Option<Self>
60 where
61 Self: Sized,
62 {
63 match code {
64 "factur-x.xml" => Some(Filename::TheHybridDocumentContainsAFacturXZugferdXmlFile),
65 "xrechnung.xml" => Some(Filename::TheHybridDocumentContainsAXrechnungXmlFile),
66 "order-x.xml" => Some(Filename::TheHybridDocumentContainsAnOrderXXmlFile),
67 _ => None,
68 }
69 }
70}