use crate::calendar::Calendar;
use crate::utilities::unpack_date;
use time::{Date, Month, Weekday};
use RustQuant_iso::*;
pub struct ArgentinaCalendar;
impl Calendar for ArgentinaCalendar {
fn new() -> Self {
Self
}
fn name(&self) -> &'static str {
"Argentina"
}
fn country_code(&self) -> ISO_3166 {
ARGENTINA
}
fn market_identifier_code(&self) -> ISO_10383 {
XBUE
}
fn is_holiday(&self, date: Date) -> bool {
let (_, m, d, wd, yd, em) = unpack_date(date, false);
if
(d == 1 && m == Month::January)
|| (yd == em-4)
|| (yd == em-3)
|| (d == 1 && m == Month::May)
|| (d == 25 && m == Month::May)
|| ((15..=21).contains(&d) && wd == Weekday::Monday && m == Month::June)
|| (d == 9 && m == Month::July)
|| ((15..=21).contains(&d) && wd == Weekday::Monday && m == Month::August)
|| ((d == 10 || d == 11 || d == 12 || d == 15 || d == 16) && wd == Weekday::Monday && m == Month::October)
|| (d == 8 && m == Month::December)
|| (d == 24 && m == Month::December)
|| ((d == 31 || (d == 30 && wd == Weekday::Friday)) && m == Month::December)
{
return true;
}
false
}
}