Skip to content

Commit

Permalink
Caching for observational islamic calendar (#4770)
Browse files Browse the repository at this point in the history
  • Loading branch information
Manishearth authored Apr 5, 2024
1 parent b8da443 commit 4044096
Show file tree
Hide file tree
Showing 22 changed files with 1,835 additions and 107 deletions.
24 changes: 13 additions & 11 deletions components/calendar/src/any_calendar.rs
Original file line number Diff line number Diff line change
Expand Up @@ -587,7 +587,7 @@ impl AnyCalendar {
AnyCalendarKind::Indian => AnyCalendar::Indian(Indian),
AnyCalendarKind::IslamicCivil => AnyCalendar::IslamicCivil(IslamicCivil),
AnyCalendarKind::IslamicObservational => {
AnyCalendar::IslamicObservational(IslamicObservational)
AnyCalendar::IslamicObservational(IslamicObservational::new())
}
AnyCalendarKind::IslamicTabular => AnyCalendar::IslamicTabular(IslamicTabular),
AnyCalendarKind::IslamicUmmAlQura => AnyCalendar::IslamicUmmAlQura(IslamicUmmAlQura),
Expand Down Expand Up @@ -628,9 +628,9 @@ impl AnyCalendar {
AnyCalendarKind::Hebrew => AnyCalendar::Hebrew(Hebrew),
AnyCalendarKind::Indian => AnyCalendar::Indian(Indian),
AnyCalendarKind::IslamicCivil => AnyCalendar::IslamicCivil(IslamicCivil),
AnyCalendarKind::IslamicObservational => {
AnyCalendar::IslamicObservational(IslamicObservational)
}
AnyCalendarKind::IslamicObservational => AnyCalendar::IslamicObservational(
IslamicObservational::try_new_with_any_provider(provider)?,
),
AnyCalendarKind::IslamicTabular => AnyCalendar::IslamicTabular(IslamicTabular),
AnyCalendarKind::IslamicUmmAlQura => AnyCalendar::IslamicUmmAlQura(IslamicUmmAlQura),
AnyCalendarKind::Iso => AnyCalendar::Iso(Iso),
Expand Down Expand Up @@ -673,9 +673,9 @@ impl AnyCalendar {
AnyCalendarKind::Hebrew => AnyCalendar::Hebrew(Hebrew),
AnyCalendarKind::Indian => AnyCalendar::Indian(Indian),
AnyCalendarKind::IslamicCivil => AnyCalendar::IslamicCivil(IslamicCivil),
AnyCalendarKind::IslamicObservational => {
AnyCalendar::IslamicObservational(IslamicObservational)
}
AnyCalendarKind::IslamicObservational => AnyCalendar::IslamicObservational(
IslamicObservational::try_new_with_buffer_provider(provider)?,
),
AnyCalendarKind::IslamicTabular => AnyCalendar::IslamicTabular(IslamicTabular),
AnyCalendarKind::IslamicUmmAlQura => AnyCalendar::IslamicUmmAlQura(IslamicUmmAlQura),
AnyCalendarKind::Iso => AnyCalendar::Iso(Iso),
Expand All @@ -697,6 +697,7 @@ impl AnyCalendar {
+ DataProvider<crate::provider::JapaneseExtendedErasV1Marker>
+ DataProvider<crate::provider::ChineseCacheV1Marker>
+ DataProvider<crate::provider::DangiCacheV1Marker>
+ DataProvider<crate::provider::IslamicObservationalCacheV1Marker>
+ ?Sized,
{
Ok(match kind {
Expand All @@ -715,7 +716,7 @@ impl AnyCalendar {
AnyCalendarKind::Indian => AnyCalendar::Indian(Indian),
AnyCalendarKind::IslamicCivil => AnyCalendar::IslamicCivil(IslamicCivil),
AnyCalendarKind::IslamicObservational => {
AnyCalendar::IslamicObservational(IslamicObservational)
AnyCalendar::IslamicObservational(IslamicObservational::try_new_unstable(provider)?)
}
AnyCalendarKind::IslamicTabular => AnyCalendar::IslamicTabular(IslamicTabular),
AnyCalendarKind::IslamicUmmAlQura => AnyCalendar::IslamicUmmAlQura(IslamicUmmAlQura),
Expand Down Expand Up @@ -769,6 +770,7 @@ impl AnyCalendar {
+ DataProvider<crate::provider::JapaneseExtendedErasV1Marker>
+ DataProvider<crate::provider::ChineseCacheV1Marker>
+ DataProvider<crate::provider::DangiCacheV1Marker>
+ DataProvider<crate::provider::IslamicObservationalCacheV1Marker>
+ ?Sized,
{
let kind = AnyCalendarKind::from_data_locale_with_fallback(locale);
Expand Down Expand Up @@ -1038,7 +1040,7 @@ impl AnyCalendarKind {
AnyCalendarKind::Hebrew => Hebrew.debug_name(),
AnyCalendarKind::Indian => Indian.debug_name(),
AnyCalendarKind::IslamicCivil => IslamicCivil.debug_name(),
AnyCalendarKind::IslamicObservational => IslamicObservational.debug_name(),
AnyCalendarKind::IslamicObservational => IslamicObservational::DEBUG_NAME,
AnyCalendarKind::IslamicTabular => IslamicTabular.debug_name(),
AnyCalendarKind::IslamicUmmAlQura => IslamicUmmAlQura.debug_name(),
AnyCalendarKind::Iso => Iso.debug_name(),
Expand Down Expand Up @@ -1231,10 +1233,10 @@ impl IntoAnyCalendar for IslamicCivil {

impl IntoAnyCalendar for IslamicObservational {
fn to_any(self) -> AnyCalendar {
AnyCalendar::IslamicObservational(IslamicObservational)
AnyCalendar::IslamicObservational(self)
}
fn to_any_cloned(&self) -> AnyCalendar {
AnyCalendar::IslamicObservational(IslamicObservational)
AnyCalendar::IslamicObservational(self.clone())
}
fn date_to_any(&self, d: &Self::DateInner) -> AnyDateInner {
AnyDateInner::IslamicObservational(*d)
Expand Down
5 changes: 5 additions & 0 deletions components/calendar/src/date.rs
Original file line number Diff line number Diff line change
Expand Up @@ -322,6 +322,11 @@ impl<A: AsCalendar> Date<A> {
pub fn calendar_wrapper(&self) -> &A {
&self.calendar
}

#[cfg(test)]
pub(crate) fn to_fixed(&self) -> calendrical_calculations::rata_die::RataDie {
Iso::fixed_from_iso(self.to_iso().inner)
}
}

impl<C: IntoAnyCalendar, A: AsCalendar<Calendar = C>> Date<A> {
Expand Down
Loading

0 comments on commit 4044096

Please sign in to comment.