Skip to content

Commit 16d1364

Browse files
Rename zone field sets (#6096)
Fixes #6022
1 parent b303f1b commit 16d1364

20 files changed

+661
-797
lines changed

Diff for: components/datetime/examples/timezone_picker.rs

+6-4
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
use std::collections::BTreeMap;
66

77
use icu::calendar::Date;
8-
use icu::datetime::{fieldsets, DateTimeFormatter};
8+
use icu::datetime::{fieldsets, TimeFormatter};
99
use icu::locale::locale;
1010
use icu::timezone::Time;
1111

@@ -15,9 +15,11 @@ fn main() {
1515

1616
let prefs = locale!("en").into();
1717

18-
let offset_formatter = DateTimeFormatter::try_new(prefs, fieldsets::O::new()).unwrap();
19-
let non_location_formatter = DateTimeFormatter::try_new(prefs, fieldsets::V::new()).unwrap();
20-
let city_formatter = DateTimeFormatter::try_new(prefs, fieldsets::X::new()).unwrap();
18+
let offset_formatter =
19+
TimeFormatter::try_new(prefs, fieldsets::zone::LocalizedOffsetLong).unwrap();
20+
let non_location_formatter =
21+
TimeFormatter::try_new(prefs, fieldsets::zone::GenericLong).unwrap();
22+
let city_formatter = TimeFormatter::try_new(prefs, fieldsets::zone::ExemplarCity).unwrap();
2123

2224
let reference_date = (Date::try_new_iso(2025, 1, 1).unwrap(), Time::midnight());
2325

Diff for: components/datetime/src/builder.rs

+38-26
Original file line numberDiff line numberDiff line change
@@ -84,13 +84,13 @@
8484
//! let static_field_set = fieldsets::T::short()
8585
//! .with_time_precision(TimePrecision::FractionalSecond(FractionalSecondDigits::F3))
8686
//! .with_alignment(Alignment::Column)
87-
//! .with_zone_specific_long();
87+
//! .zone(fieldsets::zone::SpecificLong);
8888
//!
8989
//! let mut builder = FieldSetBuilder::new();
9090
//! builder.length = Some(Length::Short);
9191
//! builder.time_precision = Some(TimePrecision::FractionalSecond(FractionalSecondDigits::F3));
9292
//! builder.alignment = Some(Alignment::Column);
93-
//! builder.zone_style = Some(ZoneStyle::Z);
93+
//! builder.zone_style = Some(ZoneStyle::SpecificLong);
9494
//! let dynamic_field_set = builder.build_composite().unwrap();
9595
//!
9696
//! assert_eq!(
@@ -157,28 +157,28 @@ pub enum DateFields {
157157
pub enum ZoneStyle {
158158
/// The long specific non-location format, as in
159159
/// “Pacific Daylight Time”.
160-
Z,
160+
SpecificLong,
161161
/// The short specific non-location format, as in
162162
/// “PDT”.
163-
Zs,
163+
SpecificShort,
164164
/// The long offset format, as in
165165
/// “GMT−8:00”.
166-
O,
166+
LocalizedOffsetLong,
167167
/// The short offset format, as in
168168
/// “GMT−8”.
169-
Os,
169+
LocalizedOffsetShort,
170170
/// The long generic non-location format, as in
171171
/// “Pacific Time”.
172-
V,
172+
GenericLong,
173173
/// The short generic non-location format, as in
174174
/// “PT”.
175-
Vs,
175+
GenericShort,
176176
/// The location format, as in
177177
/// “Los Angeles time”.
178-
L,
178+
Location,
179179
/// The exemplar city format, as in
180180
/// “Los Angeles”.
181-
X,
181+
ExemplarCity,
182182
}
183183

184184
/// An error that occurs when creating a [field set](crate::fieldsets) from a builder.
@@ -438,14 +438,26 @@ impl FieldSetBuilder {
438438

439439
fn build_zone_without_checking_options(&mut self) -> Result<ZoneFieldSet, BuilderError> {
440440
let zone_field_set = match self.zone_style.take() {
441-
Some(ZoneStyle::Z) => ZoneFieldSet::Z(fieldsets::Z::take_from_builder(self)),
442-
Some(ZoneStyle::Zs) => ZoneFieldSet::Zs(fieldsets::Zs::take_from_builder(self)),
443-
Some(ZoneStyle::O) => ZoneFieldSet::O(fieldsets::O::take_from_builder(self)),
444-
Some(ZoneStyle::Os) => ZoneFieldSet::Os(fieldsets::Os::take_from_builder(self)),
445-
Some(ZoneStyle::V) => ZoneFieldSet::V(fieldsets::V::take_from_builder(self)),
446-
Some(ZoneStyle::Vs) => ZoneFieldSet::Vs(fieldsets::Vs::take_from_builder(self)),
447-
Some(ZoneStyle::L) => ZoneFieldSet::L(fieldsets::L::take_from_builder(self)),
448-
Some(ZoneStyle::X) => ZoneFieldSet::X(fieldsets::X::take_from_builder(self)),
441+
Some(ZoneStyle::SpecificShort) => {
442+
ZoneFieldSet::SpecificShort(fieldsets::zone::SpecificShort)
443+
}
444+
Some(ZoneStyle::SpecificLong) => {
445+
ZoneFieldSet::SpecificLong(fieldsets::zone::SpecificLong)
446+
}
447+
Some(ZoneStyle::LocalizedOffsetLong) => {
448+
ZoneFieldSet::LocalizedOffsetLong(fieldsets::zone::LocalizedOffsetLong)
449+
}
450+
Some(ZoneStyle::LocalizedOffsetShort) => {
451+
ZoneFieldSet::LocalizedOffsetShort(fieldsets::zone::LocalizedOffsetShort)
452+
}
453+
Some(ZoneStyle::GenericLong) => ZoneFieldSet::GenericLong(fieldsets::zone::GenericLong),
454+
Some(ZoneStyle::GenericShort) => {
455+
ZoneFieldSet::GenericShort(fieldsets::zone::GenericShort)
456+
}
457+
Some(ZoneStyle::Location) => ZoneFieldSet::Location(fieldsets::zone::Location),
458+
Some(ZoneStyle::ExemplarCity) => {
459+
ZoneFieldSet::ExemplarCity(fieldsets::zone::ExemplarCity)
460+
}
449461
Option::None => return Err(BuilderError::InvalidFields),
450462
};
451463
Ok(zone_field_set)
@@ -602,14 +614,14 @@ mod tests {
602614
&[DateFields::M, DateFields::YM, DateFields::Y];
603615

604616
static ZONE_STYLES: &[ZoneStyle] = &[
605-
ZoneStyle::Z,
606-
ZoneStyle::Zs,
607-
ZoneStyle::O,
608-
ZoneStyle::Os,
609-
ZoneStyle::V,
610-
ZoneStyle::Vs,
611-
ZoneStyle::L,
612-
ZoneStyle::X,
617+
ZoneStyle::SpecificLong,
618+
ZoneStyle::SpecificShort,
619+
ZoneStyle::LocalizedOffsetLong,
620+
ZoneStyle::LocalizedOffsetShort,
621+
ZoneStyle::GenericLong,
622+
ZoneStyle::GenericShort,
623+
ZoneStyle::Location,
624+
ZoneStyle::ExemplarCity,
613625
];
614626

615627
#[cfg(all(feature = "serde", feature = "experimental"))]

Diff for: components/datetime/src/combo.rs

+13-13
Original file line numberDiff line numberDiff line change
@@ -14,24 +14,24 @@ use crate::{provider::neo::*, scaffold::*};
1414
/// Only one way to construct a combo field set (in this case, weekday with location-based zone):
1515
///
1616
/// ```
17-
/// use icu::datetime::fieldsets::{Combo, E, L};
17+
/// use icu::datetime::fieldsets::{Combo, E, zone::Location};
1818
///
19-
/// let field_set = E::long().with_zone_location();
19+
/// let field_set = E::long().zone(Location);
2020
/// ```
2121
///
2222
/// Format the weekday, hour, and location-based zone:
2323
///
2424
/// ```
25-
/// use icu::datetime::fieldsets::{Combo, ET, L};
25+
/// use icu::datetime::fieldsets::{Combo, ET, zone::Location};
2626
/// use icu::datetime::DateTimeFormatter;
2727
/// use icu::locale::locale;
2828
/// use icu::timezone::ZonedDateTimeParser;
2929
/// use writeable::assert_writeable_eq;
3030
///
3131
/// // Note: Combo type can be elided, but it is shown here for demonstration
32-
/// let formatter = DateTimeFormatter::<Combo<ET, L>>::try_new(
32+
/// let formatter = DateTimeFormatter::<Combo<ET, Location>>::try_new(
3333
/// locale!("en-US").into(),
34-
/// ET::short().hm().with_zone_location(),
34+
/// ET::short().hm().zone(Location),
3535
/// )
3636
/// .unwrap();
3737
///
@@ -49,16 +49,16 @@ use crate::{provider::neo::*, scaffold::*};
4949
///
5050
/// ```
5151
/// use icu::calendar::Gregorian;
52-
/// use icu::datetime::fieldsets::{Combo, ET, L};
52+
/// use icu::datetime::fieldsets::{Combo, ET, zone::Location};
5353
/// use icu::datetime::FixedCalendarDateTimeFormatter;
5454
/// use icu::locale::locale;
5555
/// use icu::timezone::{ZonedDateTimeParser, ZonedDateTime};
5656
/// use writeable::assert_writeable_eq;
5757
///
5858
/// // Note: Combo type can be elided, but it is shown here for demonstration
59-
/// let formatter = FixedCalendarDateTimeFormatter::<_, Combo<ET, L>>::try_new(
59+
/// let formatter = FixedCalendarDateTimeFormatter::<_, Combo<ET, Location>>::try_new(
6060
/// locale!("en-US").into(),
61-
/// ET::short().hm().with_zone_location(),
61+
/// ET::short().hm().zone(Location),
6262
/// )
6363
/// .unwrap();
6464
///
@@ -76,16 +76,16 @@ use crate::{provider::neo::*, scaffold::*};
7676
/// with a static time zone:
7777
///
7878
/// ```
79-
/// use icu::datetime::fieldsets::{enums::DateFieldSet, Combo, Vs, YMD};
79+
/// use icu::datetime::fieldsets::{enums::DateFieldSet, Combo, zone::GenericShort, YMD};
8080
/// use icu::datetime::DateTimeFormatter;
8181
/// use icu::locale::locale;
8282
/// use icu::timezone::ZonedDateTimeParser;
8383
/// use writeable::assert_writeable_eq;
8484
///
8585
/// // Note: Combo type can be elided, but it is shown here for demonstration
86-
/// let formatter = DateTimeFormatter::<Combo<DateFieldSet, Vs>>::try_new(
86+
/// let formatter = DateTimeFormatter::<Combo<DateFieldSet, GenericShort>>::try_new(
8787
/// locale!("en-US").into(),
88-
/// DateFieldSet::YMD(YMD::long()).with_zone_generic(),
88+
/// DateFieldSet::YMD(YMD::long()).zone(GenericShort),
8989
/// )
9090
/// .unwrap();
9191
///
@@ -103,15 +103,15 @@ use crate::{provider::neo::*, scaffold::*};
103103
///
104104
/// ```
105105
/// use icu::calendar::Gregorian;
106-
/// use icu::datetime::fieldsets::T;
106+
/// use icu::datetime::fieldsets::{T, zone::SpecificLong};
107107
/// use icu::datetime::FixedCalendarDateTimeFormatter;
108108
/// use icu::locale::locale;
109109
/// use icu::timezone::{ZonedDateTimeParser, ZonedDateTime};
110110
/// use writeable::assert_writeable_eq;
111111
///
112112
/// let formatter = FixedCalendarDateTimeFormatter::try_new(
113113
/// locale!("en-US").into(),
114-
/// T::medium().with_zone_specific_long(),
114+
/// T::medium().zone(SpecificLong),
115115
/// )
116116
/// .unwrap();
117117
///

Diff for: components/datetime/src/dynamic.rs

+18-18
Original file line numberDiff line numberDiff line change
@@ -139,35 +139,35 @@ pub enum TimeFieldSet {
139139
/// Time zone names contribute a lot of data size. For resource-constrained
140140
/// environments, the following formats require the least amount of data:
141141
///
142-
/// - [`fieldsets::Zs`]
143-
/// - [`fieldsets::O`]
142+
/// - [`fieldsets::zone::SpecificShort`]
143+
/// - [`fieldsets::zone::LocalizedOffsetLong`]
144144
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
145145
#[non_exhaustive]
146146
pub enum ZoneFieldSet {
147147
/// The long specific non-location format, as in
148148
/// “Pacific Daylight Time”.
149-
Z(fieldsets::Z),
149+
SpecificLong(fieldsets::zone::SpecificLong),
150150
/// The short specific non-location format, as in
151151
/// “PDT”.
152-
Zs(fieldsets::Zs),
152+
SpecificShort(fieldsets::zone::SpecificShort),
153153
/// The long offset format, as in
154154
/// “GMT−8:00”.
155-
O(fieldsets::O),
155+
LocalizedOffsetLong(fieldsets::zone::LocalizedOffsetLong),
156156
/// The short offset format, as in
157157
/// “GMT−8”.
158-
Os(fieldsets::Os),
158+
LocalizedOffsetShort(fieldsets::zone::LocalizedOffsetShort),
159159
/// The long generic non-location format, as in
160160
/// “Pacific Time”.
161-
V(fieldsets::V),
161+
GenericLong(fieldsets::zone::GenericLong),
162162
/// The short generic non-location format, as in
163163
/// “PT”.
164-
Vs(fieldsets::Vs),
164+
GenericShort(fieldsets::zone::GenericShort),
165165
/// The location format, as in
166166
/// “Los Angeles Time”.
167-
L(fieldsets::L),
167+
Location(fieldsets::zone::Location),
168168
/// The exemplar city format, as in
169169
/// “Los Angeles.
170-
X(fieldsets::X),
170+
ExemplarCity(fieldsets::zone::ExemplarCity),
171171
}
172172

173173
/// An enumeration over all possible date+time composite field sets.
@@ -472,14 +472,14 @@ impl_attrs! {
472472
@zone,
473473
ZoneFieldSet,
474474
[
475-
Z,
476-
Zs,
477-
O,
478-
Os,
479-
V,
480-
Vs,
481-
L,
482-
X,
475+
SpecificLong,
476+
SpecificShort,
477+
LocalizedOffsetLong,
478+
LocalizedOffsetShort,
479+
GenericLong,
480+
GenericShort,
481+
Location,
482+
ExemplarCity,
483483
]
484484
}
485485

0 commit comments

Comments
 (0)