use crate::calendar::Calendar;
use crate::utilities::unpack_date;
use time::{Date, Month};
use RustQuant_iso::*;
pub struct CzechRepublicCalendar;
impl Calendar for CzechRepublicCalendar {
fn new() -> Self {
Self
}
fn name(&self) -> &'static str {
"Czech Republic"
}
fn country_code(&self) -> ISO_3166 {
CZECH_REPUBLIC
}
fn market_identifier_code(&self) -> ISO_10383 {
XPRA
}
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 && y >= 2016)
|| (yd == em)
|| (d == 1 && m == Month::May)
|| (d == 8 && m == Month::May)
|| (d == 5 && m == Month::July)
|| (d == 6 && m == Month::July)
|| (d == 28 && m == Month::September)
|| (d == 28 && m == Month::October)
|| (d == 17 && m == Month::November)
|| (d == 24 && m == Month::December)
|| (d == 25 && m == Month::December)
|| (d == 26 && m == Month::December)
|| (d == 2 && m == Month::January && y == 2004)
|| (d == 31 && m == Month::December && y == 2004)
) {
return true;
}
false
}
}