zugferd 0.1.0

Generate a ZUGFeRD XML for European e-invoices.
Documentation
use serde::{Serialize,Serializer};

#[derive(Debug,Clone,Copy)]
pub enum CurrencyCode {
    Euro,
    BritishPound,
    SwissFranc,
    NorwegianKrone,
    SwedishKrona,
    DanishKrone,
    PolishZloty,
    HungarianForint,
    CzechKoruna,
    RomanianLeu,
    BulgarianLev,
    CroatianKuna,
}

impl CurrencyCode {
    pub fn as_str(&self) -> &str {
        match self {
            CurrencyCode::Euro => "EUR",
            CurrencyCode::BritishPound => "GBP",
            CurrencyCode::SwissFranc => "CHF",
            CurrencyCode::NorwegianKrone => "NOK",
            CurrencyCode::SwedishKrona => "SEK",
            CurrencyCode::DanishKrone => "DKK",
            CurrencyCode::PolishZloty => "PLN",
            CurrencyCode::HungarianForint => "HUF",
            CurrencyCode::CzechKoruna => "CZK",
            CurrencyCode::RomanianLeu => "RON",
            CurrencyCode::BulgarianLev => "BGN",
            CurrencyCode::CroatianKuna => "HRK",
        }
    }
}

impl Serialize for CurrencyCode {
    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
    where
        S: Serializer,
    {
        serializer.serialize_str(self.as_str())
    }
}