holidays-ru 0.2.0

A library for determining working days, weekends, and holidays in Russia.
Documentation
use crate::Resolved;
use crate::data::YearFact;
use crate::raw_date::RawDate;

use crate::data::months;

/// Первый год, для которого есть региональные данные: Республика Крым.
pub(crate) const FIRST_YEAR: i32 = 2015;

/// Региональный overlay-календарь: Республика Крым, 2015 год.
pub(crate) const Y2015: YearFact = YearFact {
    holidays: months! {
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: День воссоединения Крыма с Россией.
        Mar: [18],
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: Светлое Христово Воскресение (Пасха).
        Apr: [13],
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: День Святой Троицы.
        Jun: [1],
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: Ораза-байрам.
        Jul: [17],
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: Курбан-байрам.
        Sep: [23],
    },
    extra_days_off: months! {},
    working_days: months! {},
    short_days: months! {},
    transferred_days: months! {},
};

/// Региональный overlay-календарь: Республика Крым, 2016 год.
pub(crate) const Y2016: YearFact = YearFact {
    holidays: months! {
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: День воссоединения Крыма с Россией.
        Mar: [18],
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: Светлое Христово Воскресение (Пасха).
        May: [2],
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: День Святой Троицы.
        Jun: [20],
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: Ораза-байрам.
        Jul: [6],
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: Курбан-байрам.
        Sep: [11],
    },
    extra_days_off: months! {},
    working_days: months! {},
    short_days: months! {},
    transferred_days: months! {},
};

/// Региональный overlay-календарь: Республика Крым, 2017 год.
pub(crate) const Y2017: YearFact = YearFact {
    holidays: months! {
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: День воссоединения Крыма с Россией.
        Mar: [18],
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: Светлое Христово Воскресение (Пасха).
        Apr: [17],
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: День Святой Троицы.
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: Ораза-байрам.
        Jun: [5, 25],
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: Курбан-байрам.
        Sep: [1],
    },
    extra_days_off: months! {},
    working_days: months! {},
    short_days: months! {},
    transferred_days: months! {},
};

/// Региональный overlay-календарь: Республика Крым, 2018 год.
pub(crate) const Y2018: YearFact = YearFact {
    holidays: months! {
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: День воссоединения Крыма с Россией.
        Mar: [18],
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: Светлое Христово Воскресение (Пасха).
        Apr: [9],
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: День Святой Троицы.
        May: [28],
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: Ораза-байрам.
        Jun: [15],
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: Курбан-байрам.
        Aug: [21],
    },
    extra_days_off: months! {},
    working_days: months! {},
    short_days: months! {},
    transferred_days: months! {},
};

/// Региональный overlay-календарь: Республика Крым, 2019 год.
pub(crate) const Y2019: YearFact = YearFact {
    holidays: months! {
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: День воссоединения Крыма с Россией.
        Mar: [18],
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: Светлое Христово Воскресение (Пасха).
        Apr: [29],
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: Ораза-байрам.
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: День Святой Троицы.
        Jun: [4, 17],
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: Курбан-байрам.
        Aug: [11],
    },
    extra_days_off: months! {},
    working_days: months! {},
    short_days: months! {},
    transferred_days: months! {},
};

/// Региональный overlay-календарь: Республика Крым, 2020 год.
pub(crate) const Y2020: YearFact = YearFact {
    holidays: months! {
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: День воссоединения Крыма с Россией.
        Mar: [18],
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: Светлое Христово Воскресение (Пасха).
        Apr: [20],
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: Ораза-байрам.
        May: [24],
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: День Святой Троицы.
        Jun: [8],
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: Курбан-байрам.
        Jul: [31],
    },
    extra_days_off: months! {},
    working_days: months! {},
    short_days: months! {},
    transferred_days: months! {},
};

/// Региональный overlay-календарь: Республика Крым, 2021 год.
pub(crate) const Y2021: YearFact = YearFact {
    holidays: months! {
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: День воссоединения Крыма с Россией.
        Mar: [18],
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: Светлое Христово Воскресение (Пасха).
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: Ораза-байрам.
        May: [3, 13],
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: День Святой Троицы.
        Jun: [21],
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: Курбан-байрам.
        Jul: [20],
    },
    extra_days_off: months! {},
    working_days: months! {},
    short_days: months! {},
    transferred_days: months! {},
};

/// Региональный overlay-календарь: Республика Крым, 2022 год.
pub(crate) const Y2022: YearFact = YearFact {
    holidays: months! {
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: День воссоединения Крыма с Россией.
        Mar: [18],
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: Светлое Христово Воскресение (Пасха).
        Apr: [25],
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: Ораза-байрам.
        May: [2],
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: День Святой Троицы.
        Jun: [13],
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: Курбан-байрам.
        Jul: [9],
    },
    extra_days_off: months! {},
    working_days: months! {},
    short_days: months! {},
    transferred_days: months! {},
};

/// Региональный overlay-календарь: Республика Крым, 2023 год.
pub(crate) const Y2023: YearFact = YearFact {
    holidays: months! {
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: День воссоединения Крыма с Россией.
        Mar: [18],
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: Светлое Христово Воскресение (Пасха).
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: Ораза-байрам.
        Apr: [17, 21],
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: День Святой Троицы.
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: Курбан-байрам.
        Jun: [5, 28],
    },
    extra_days_off: months! {},
    working_days: months! {},
    short_days: months! {},
    transferred_days: months! {},
};

/// Региональный overlay-календарь: Республика Крым, 2024 год.
pub(crate) const Y2024: YearFact = YearFact {
    holidays: months! {
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: День воссоединения Крыма с Россией.
        Mar: [18],
        // Указ Главы Республики Крым от 22.02.2024 N 38-У: Ораза-байрам.
        Apr: [12],
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: Светлое Христово Воскресение (Пасха).
        // Указ Главы Республики Крым от 22.02.2024 N 38-У: Пасха.
        May: [6],
        // Указ Главы Республики Крым от 22.02.2024 N 38-У: Курбан-байрам.
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: День Святой Троицы.
        // Указ Главы Республики Крым от 22.02.2024 N 38-У: Троица.
        Jun: [17, 24],
    },
    extra_days_off: months! {},
    working_days: months! {},
    short_days: months! {},
    transferred_days: months! {},
};

/// Региональный overlay-календарь: Республика Крым, 2025 год.
pub(crate) const Y2025: YearFact = YearFact {
    holidays: months! {
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: День воссоединения Крыма с Россией.
        // Указ Главы Республики Крым от 06.02.2025 N 33-У: Ораза-байрам.
        Mar: [18, 31],
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: Светлое Христово Воскресение (Пасха).
        // Указ Главы Республики Крым от 06.02.2025 N 33-У: Пасха.
        Apr: [21],
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: Курбан-байрам.
        // Указ Главы Республики Крым от 06.02.2025 N 33-У: Курбан-байрам.
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: День Святой Троицы.
        // Указ Главы Республики Крым от 06.02.2025 N 33-У: Троица.
        Jun: [6, 9],
    },
    extra_days_off: months! {},
    working_days: months! {},
    short_days: months! {},
    transferred_days: months! {},
};

/// Региональный overlay-календарь: Республика Крым, 2026 год.
pub(crate) const Y2026: YearFact = YearFact {
    holidays: months! {
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: День воссоединения Крыма с Россией.
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: Ораза-байрам.
        // Указ Главы Республики Крым от 12.01.2026 N 3-У: Ораза-байрам.
        Mar: [18, 20],
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: Светлое Христово Воскресение (Пасха).
        // Указ Главы Республики Крым от 12.01.2026 N 3-У: Пасха.
        Apr: [13],
        // Указ Главы Республики Крым от 12.01.2026 N 3-У: Курбан-байрам.
        May: [29],
        // Закон Республики Крым от 29.12.2014 N 55-ЗРК/2014: День Святой Троицы.
        // Указ Главы Республики Крым от 12.01.2026 N 3-У: Троица.
        Jun: [1],
    },
    extra_days_off: months! {},
    working_days: months! {},
    short_days: months! {},
    transferred_days: months! {},
};

static YEARS: [YearFact; 12] = [
    Y2015, Y2016, Y2017, Y2018, Y2019, Y2020, Y2021, Y2022, Y2023, Y2024, Y2025, Y2026,
];

/// Прогноз регионального overlay-календаря по ежегодным фиксированным датам.
static PREDICT: YearFact = YearFact {
    holidays: months! {
        // ежегодный фиксированный праздник.
        Mar: [18],
    },
    extra_days_off: months! {},
    working_days: months! {},
    short_days: months! {},
    transferred_days: months! {},
};

#[inline]
pub(crate) fn flags(date: RawDate) -> Resolved<crate::DayFlags> {
    super::resolve(date, FIRST_YEAR, &YEARS, &PREDICT)
}