use crate::calendar::Calendar;
use crate::utilities::unpack_date;
use time::{Date, Month};
use RustQuant_iso::*;
pub struct GermanyCalendar;
impl Calendar for GermanyCalendar {
fn new() -> Self {
Self
}
fn name(&self) -> &'static str {
"Germany"
}
fn country_code(&self) -> ISO_3166 {
GERMANY
}
fn market_identifier_code(&self) -> ISO_10383 {
XFRA
}
fn is_holiday(&self, date: Date) -> bool {
let (_y, m, d, _wd, yd, em) = unpack_date(date, false);
if (
d == 1 && m == Month::January
|| yd == em - 3
|| yd == em
|| yd == em + 38
|| yd == em + 49
|| yd == em + 59
|| d == 1 && m == Month::May
|| d == 3 && m == Month::October
|| d == 24 && m == Month::December
|| d == 25 && m == Month::December
|| d == 26 && m == Month::December
) {
return true;
}
false
}
}