From a1a04277144a874b294a985bc173a2c7209a63f9 Mon Sep 17 00:00:00 2001 From: "Shane F. Carr" Date: Tue, 15 Oct 2024 14:22:01 -0700 Subject: [PATCH] Move datetime calendar traits to scaffolding --- components/datetime/src/format/neo.rs | 2 +- components/datetime/src/lib.rs | 2 -- components/datetime/src/neo.rs | 5 ++--- components/datetime/src/neo_marker.rs | 11 +---------- components/datetime/src/{ => scaffolding}/calendar.rs | 2 ++ .../src/{scaffolding.rs => scaffolding/mod.rs} | 8 ++++++++ components/datetime/tests/datetime.rs | 2 +- 7 files changed, 15 insertions(+), 17 deletions(-) rename components/datetime/src/{ => scaffolding}/calendar.rs (99%) rename components/datetime/src/{scaffolding.rs => scaffolding/mod.rs} (79%) diff --git a/components/datetime/src/format/neo.rs b/components/datetime/src/format/neo.rs index e42a1dbf5c..ccd5f4571a 100644 --- a/components/datetime/src/format/neo.rs +++ b/components/datetime/src/format/neo.rs @@ -7,7 +7,6 @@ use super::{ GetNameForDayPeriodError, GetNameForMonthError, GetNameForWeekdayError, GetSymbolForEraError, MonthPlaceholderValue, }; -use crate::calendar::CldrCalendar; use crate::external_loaders::*; use crate::fields::{self, Field, FieldLength, FieldSymbol}; use crate::helpers::size_test; @@ -22,6 +21,7 @@ use crate::neo_skeleton::NeoDateTimeSkeleton; use crate::pattern::PatternItem; use crate::provider::neo::*; use crate::provider::time_zones::tz; +use crate::scaffolding::*; use crate::time_zone::ResolvedNeoTimeZoneSkeleton; use crate::time_zone::TimeZoneDataPayloadsBorrowed; use core::fmt; diff --git a/components/datetime/src/lib.rs b/components/datetime/src/lib.rs index 60fe04ad46..17ba6a3aad 100644 --- a/components/datetime/src/lib.rs +++ b/components/datetime/src/lib.rs @@ -89,7 +89,6 @@ extern crate alloc; -mod calendar; mod error; mod external_loaders; pub mod fields; @@ -116,7 +115,6 @@ pub mod skeleton; mod time_zone; mod tz_registry; -pub use calendar::CldrCalendar; pub use error::MismatchedCalendarError; pub use format::datetime::DateTimeWriteError; pub use format::neo::{FormattedDateTimePattern, LoadError, SingleLoadError, TypedDateTimeNames}; diff --git a/components/datetime/src/neo.rs b/components/datetime/src/neo.rs index 58bd43014b..e44f70d3c3 100644 --- a/components/datetime/src/neo.rs +++ b/components/datetime/src/neo.rs @@ -4,7 +4,6 @@ //! High-level entrypoints for Neo DateTime Formatter -use crate::calendar::AnyCalendarProvider; use crate::external_loaders::*; use crate::format::datetime::try_write_pattern_items; use crate::format::datetime::DateTimeWriteError; @@ -13,7 +12,7 @@ use crate::input::ExtractedInput; use crate::neo_marker::DateInputMarkers; use crate::neo_marker::HasConstComponents; use crate::neo_marker::{ - AllInputMarkers, CalMarkers, ConvertCalendar, DateDataMarkers, DateTimeMarkers, GetField, + AllInputMarkers, ConvertCalendar, DateDataMarkers, DateTimeMarkers, GetField, IsAnyCalendarKind, IsInCalendar, IsRuntimeComponents, TimeMarkers, TypedDateDataMarkers, ZoneMarkers, }; @@ -23,7 +22,7 @@ use crate::options::preferences::HourCycle; use crate::provider::neo::*; use crate::provider::ErasedPackedPatterns; use crate::raw::neo::*; -use crate::CldrCalendar; +use crate::scaffolding::*; use crate::MismatchedCalendarError; use core::fmt; use core::marker::PhantomData; diff --git a/components/datetime/src/neo_marker.rs b/components/datetime/src/neo_marker.rs index ca73f40687..868df30a2b 100644 --- a/components/datetime/src/neo_marker.rs +++ b/components/datetime/src/neo_marker.rs @@ -341,8 +341,7 @@ use crate::{ format::neo::*, neo_skeleton::*, provider::{neo::*, time_zones::tz, *}, - scaffolding::UnstableSealed, - CldrCalendar, + scaffolding::*, }; use icu_calendar::{ any_calendar::IntoAnyCalendar, @@ -357,14 +356,6 @@ use icu_timezone::{ CustomTimeZone, CustomZonedDateTime, MetazoneId, TimeZoneBcp47Id, UtcOffset, ZoneVariant, }; -// TODO: Figure out where to export these traits -#[doc(inline)] -pub use crate::calendar::CalMarkers; -#[doc(inline)] -pub use crate::calendar::FullDataCalMarkers; -#[doc(inline)] -pub use crate::calendar::NoDataCalMarkers; - /// A type that can be converted into a specific calendar system. pub trait ConvertCalendar { /// The converted type. This can be the same as the receiver type. diff --git a/components/datetime/src/calendar.rs b/components/datetime/src/scaffolding/calendar.rs similarity index 99% rename from components/datetime/src/calendar.rs rename to components/datetime/src/scaffolding/calendar.rs index 2f0a54332f..a89d51c7a3 100644 --- a/components/datetime/src/calendar.rs +++ b/components/datetime/src/scaffolding/calendar.rs @@ -2,6 +2,8 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). +//! Scaffolding traits and impls for calendars. + use icu_calendar::any_calendar::AnyCalendarKind; use icu_calendar::chinese::Chinese; use icu_calendar::roc::Roc; diff --git a/components/datetime/src/scaffolding.rs b/components/datetime/src/scaffolding/mod.rs similarity index 79% rename from components/datetime/src/scaffolding.rs rename to components/datetime/src/scaffolding/mod.rs index 8deba3919a..530eab01f1 100644 --- a/components/datetime/src/scaffolding.rs +++ b/components/datetime/src/scaffolding/mod.rs @@ -7,6 +7,14 @@ //! Items in this module are mostly for trait bounds. Most users should not need to reference //! these items in userland code. +mod calendar; + +pub(crate) use calendar::AnyCalendarProvider; +pub use calendar::CalMarkers; +pub use calendar::CldrCalendar; +pub use calendar::FullDataCalMarkers; +pub use calendar::NoDataCalMarkers; + /// Trait marking other traits that are considered unstable and should not generally be /// implemented outside of the datetime crate. /// diff --git a/components/datetime/tests/datetime.rs b/components/datetime/tests/datetime.rs index 42b5df3f3f..64090a0ad7 100644 --- a/components/datetime/tests/datetime.rs +++ b/components/datetime/tests/datetime.rs @@ -25,7 +25,7 @@ use icu_calendar::{ AsCalendar, Calendar, DateTime, Gregorian, Iso, }; use icu_datetime::neo_skeleton::NeoDateTimeSkeleton; -use icu_datetime::CldrCalendar; +use icu_datetime::scaffolding::CldrCalendar; use icu_datetime::{ neo::{NeoFormatter, TypedNeoFormatter}, neo_pattern::DateTimePattern,