///|
fn required_date(text : String) -> Date {
match Date::parse(text) {
Ok(date) => date
Err(_) => panic()
}
}
///| Create a calendar from the State Council's published 2026 holiday plan.
///|
/// The date list is intentionally explicit so callers can replace it with
/// their own jurisdiction, court, or contract calendar without changing the
/// deadline engine.
pub fn Calendar::china_2026() -> Calendar {
let version = CalendarVersion::new(
name="china-national-2026",
region="China",
version="2025-11-04",
source=CalendarSource::new(
name="Beijing government policy page",
url="https://www.beijing.gov.cn/gate/big5/www.beijing.gov.cn/zhengce/zhengcefagui/202511/t20251104_4258873.html",
),
valid_from=required_date("2026-01-01"),
valid_to=required_date("2026-12-31"),
)
match version {
Ok(version) =>
Calendar::new(
name="china-national-2026",
version="2025-11-04",
weekend=WeekendPolicy::saturday_sunday(),
holidays=[
required_date("2026-01-01"),
required_date("2026-01-02"),
required_date("2026-01-03"),
required_date("2026-02-15"),
required_date("2026-02-16"),
required_date("2026-02-17"),
required_date("2026-02-18"),
required_date("2026-02-19"),
required_date("2026-02-20"),
required_date("2026-02-21"),
required_date("2026-02-22"),
required_date("2026-02-23"),
required_date("2026-04-04"),
required_date("2026-04-05"),
required_date("2026-04-06"),
required_date("2026-05-01"),
required_date("2026-05-02"),
required_date("2026-05-03"),
required_date("2026-05-04"),
required_date("2026-05-05"),
required_date("2026-06-19"),
required_date("2026-06-20"),
required_date("2026-06-21"),
required_date("2026-09-25"),
required_date("2026-09-26"),
required_date("2026-09-27"),
required_date("2026-10-01"),
required_date("2026-10-02"),
required_date("2026-10-03"),
required_date("2026-10-04"),
required_date("2026-10-05"),
required_date("2026-10-06"),
required_date("2026-10-07"),
],
extra_workdays=[
required_date("2026-01-04"),
required_date("2026-02-14"),
required_date("2026-02-28"),
required_date("2026-05-09"),
required_date("2026-09-20"),
required_date("2026-10-10"),
],
).with_version(version)
Err(_) => panic()
}
}