///|
/// dateutil weekday with an optional relative occurrence. None and zero apply
/// as +1; the weekday object's equality still distinguishes their stored values.
pub struct RelativeWeekday {
priv weekday : Int32
priv nth : Int32?
} derive(Eq, Debug)
///|
pub extend RelativeWeekday with Eq::{equal, not_equal}
///|
pub extend RelativeWeekday with @debug.Debug::{to_repr}
///|
/// Construct the weekday object form. As in dateutil.weekday, arbitrary integer
/// indices are retained; applying a delta uses modulo-seven calendar movement.
pub fn RelativeWeekday::new(weekday : Int32, nth? : Int32) -> RelativeWeekday {
{ weekday, nth, }
}
///|
pub fn RelativeWeekday::weekday(self : RelativeWeekday) -> Int32 {
self.weekday
}
///|
pub fn RelativeWeekday::nth(self : RelativeWeekday) -> Int32? {
self.nth
}
///|
pub fn RelativeWeekday::with_nth(
self : RelativeWeekday,
nth : Int32,
) -> RelativeWeekday {
{ ..self, nth: Some(nth), }
}
///|
pub let mo : RelativeWeekday = { weekday: 0, nth: None, }
///|
pub let tu : RelativeWeekday = { weekday: 1, nth: None, }
///|
pub let we : RelativeWeekday = { weekday: 2, nth: None, }
///|
pub let th : RelativeWeekday = { weekday: 3, nth: None, }
///|
pub let fr : RelativeWeekday = { weekday: 4, nth: None, }
///|
pub let sa : RelativeWeekday = { weekday: 5, nth: None, }
///|
pub let su : RelativeWeekday = { weekday: 6, nth: None, }