///|
pub enum CalendarValidationError {
CalendarMissingName
CalendarMissingVersion
CalendarInvalidRange
} derive(Debug, Eq, Compare)
///|
/// A small immutable builder for calendars assembled by an application.
pub struct CalendarBuilder {
name : String
version : String
region : String
source : CalendarSource
valid_from : Date?
valid_to : Date?
weekend : WeekendPolicy
holidays : Array[Date]
extra_workdays : Array[Date]
}
///|
pub enum CalendarDayKind {
BusinessDay
Weekend
Holiday
ObservedHoliday
} derive(Debug, Eq, Compare)
///|
pub fn CalendarDayKind::to_string(self : CalendarDayKind) -> String {
match self {
BusinessDay => "business-day"
Weekend => "weekend"
Holiday => "holiday"
ObservedHoliday => "observed-holiday"
}
}
///|
pub struct CalendarDayInfo {
date : Date
kind : CalendarDayKind
calendar_name : String
calendar_version : String
}