Skip to content
Merged
Show file tree
Hide file tree
Changes from 17 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@
// called LICENSE at the top level of the ICU4X source tree
// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).

use crate::dimension::provider::units::display_name::UnitsDisplayName;
use crate::dimension::provider::units::display_names::UnitsDisplayNames;

macro_rules! define_units_data_markers {
($($marker:ident, $doc:literal);* $(;)?) => {
$(
icu_provider::data_marker!(
#[doc = $doc]
$marker,
UnitsDisplayName<'static>,
UnitsDisplayNames<'static>,
#[cfg(feature = "datagen")]
attributes_domain = "units"
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ use icu_plurals::provider::PluralElementsPackedCow;
use icu_provider::prelude::*;

icu_provider::data_marker!(
/// `UnitsDisplayNameV1`
UnitsDisplayNameV1,
UnitsDisplayName<'static>,
/// `UnitsDisplayNamesV1`
UnitsDisplayNamesV1,
UnitsDisplayNames<'static>,
#[cfg(feature = "datagen")]
attributes_domain = "units"
);
Expand All @@ -25,16 +25,16 @@ icu_provider::data_marker!(
#[cfg_attr(feature = "datagen", derive(serde::Serialize))]
#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
#[yoke(prove_covariance_manually)]
pub struct UnitsDisplayName<'data> {
pub struct UnitsDisplayNames<'data> {
// TODO: use `MeasureUnit` for the units key instead of strings.
/// Contains the long width patterns for the units.
#[cfg_attr(feature = "serde", serde(borrow))]
pub patterns: PluralElementsPackedCow<'data, SinglePlaceholderPattern>,
}

icu_provider::data_struct!(UnitsDisplayName<'_>, #[cfg(feature = "datagen")]);
icu_provider::data_struct!(UnitsDisplayNames<'_>, #[cfg(feature = "datagen")]);

impl<'data> UnitsDisplayName<'data> {
impl<'data> UnitsDisplayNames<'data> {
/// Construct an instance directly from a byte slice.
///
/// # Safety
Expand All @@ -54,20 +54,20 @@ impl<'data> UnitsDisplayName<'data> {
}

#[cfg(feature = "datagen")]
impl databake::Bake for UnitsDisplayName<'_> {
impl databake::Bake for UnitsDisplayNames<'_> {
fn bake(&self, ctx: &databake::CrateEnv) -> databake::TokenStream {
use zerovec::ule::VarULE;
ctx.insert("icu_experimental::dimension::provider::units");
ctx.insert("icu_experimental::dimension::provider::units::display_names");
let bytes = self.patterns.elements.as_bytes().bake(ctx);
// Safety: The bytes are returned by `PluralElementsPackedULE::slice_as_bytes`.
databake::quote! { unsafe {
icu_experimental::dimension::provider::units::display_name::UnitsDisplayName::from_bytes_unchecked(#bytes)
icu_experimental::dimension::provider::units::display_names::UnitsDisplayNames::from_bytes_unchecked(#bytes)
}}
}
}

#[cfg(feature = "datagen")]
impl databake::BakeSize for UnitsDisplayName<'_> {
impl databake::BakeSize for UnitsDisplayNames<'_> {
fn borrows_size(&self) -> usize {
self.patterns.borrows_size()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ use icu_provider::prelude::*;
/// </div>
pub use crate::provider::Baked;

use super::pattern_key::PatternKey;
use crate::dimension::provider::units::pattern_key::PatternKey;

icu_provider::data_marker!(
/// `UnitsEssentialsV1`
Expand Down
4 changes: 2 additions & 2 deletions components/experimental/src/dimension/provider/units/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
// called LICENSE at the top level of the ICU4X source tree
// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).

pub mod categorized_display_name;
pub mod display_name;
pub mod categorized_display_names;
pub mod display_names;
pub mod essentials;
pub mod pattern_key;
Original file line number Diff line number Diff line change
Expand Up @@ -13,19 +13,15 @@ use zerovec::{
use crate::dimension::provider::units::essentials::CompoundCount;

#[derive(Copy, Clone, PartialOrd, Ord, PartialEq, Eq, Debug)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
#[cfg_attr(feature = "datagen", databake(path = icu_experimental::dimension::provider::pattern_key))]
#[cfg_attr(feature = "datagen", derive(serde::Serialize, serde::Deserialize))]
#[repr(u8)]
pub enum PowerValue {
Two,
Three,
}

#[derive(Copy, Clone, PartialOrd, Ord, PartialEq, Eq, Debug)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
#[cfg_attr(feature = "datagen", databake(path = icu_experimental::dimension::provider::pattern_key))]
#[cfg_attr(feature = "datagen", derive(serde::Serialize, serde::Deserialize))]
pub enum PatternKey {
Binary(u8),
Decimal(i8),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,8 @@ prefs_convert!(CategorizedUnitsFormatterPreferences, PluralRulesPreferences);
/// This is useful for type inference and for ensuring that the correct units are used.
pub struct CategorizedFormatter<C: MeasureUnitCategory> {
_category: PhantomData<C>,
display_name: DataPayload<crate::dimension::provider::units::display_name::UnitsDisplayNameV1>,
display_name:
DataPayload<crate::dimension::provider::units::display_names::UnitsDisplayNamesV1>,
decimal_formatter: DecimalFormatter,
plural_rules: PluralRules,
}
Expand Down
4 changes: 2 additions & 2 deletions components/experimental/src/dimension/units/format.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

//! Experimental.

use crate::dimension::provider::units::display_name::UnitsDisplayName;
use crate::dimension::provider::units::display_names::UnitsDisplayNames;
use fixed_decimal::Decimal;
use icu_decimal::DecimalFormatter;
use icu_plurals::PluralRules;
Expand All @@ -15,7 +15,7 @@ pub struct FormattedUnit<'l> {
// TODO: review using options and essentials.
// pub(crate) _options: &'l UnitsFormatterOptions,
// pub(crate) essential: &'l UnitsEssentials<'l>,
pub(crate) display_name: &'l UnitsDisplayName<'l>,
pub(crate) display_name: &'l UnitsDisplayNames<'l>,
pub(crate) decimal_formatter: &'l DecimalFormatter,
pub(crate) plural_rules: &'l PluralRules,
}
Expand Down
10 changes: 5 additions & 5 deletions components/experimental/src/dimension/units/formatter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ use icu_provider::DataPayload;

use super::format::FormattedUnit;
use super::options::{UnitsFormatterOptions, Width};
use crate::dimension::provider::units::display_name::UnitsDisplayNameV1;
use crate::dimension::provider::units::display_names::UnitsDisplayNamesV1;
use icu_provider::prelude::*;
use smallvec::SmallVec;

Expand Down Expand Up @@ -51,7 +51,7 @@ pub struct UnitsFormatter {
// /// Essential data for the units formatter.
// essential: DataPayload<UnitsEssentialsV1>,
/// Display name for the units.
display_name: DataPayload<UnitsDisplayNameV1>,
display_name: DataPayload<UnitsDisplayNamesV1>,

/// A [`DecimalFormatter`] to format the unit value.
decimal_formatter: DecimalFormatter,
Expand Down Expand Up @@ -96,7 +96,7 @@ impl UnitsFormatter {
unit: &str,
options: super::options::UnitsFormatterOptions,
) -> Result<Self, DataError> {
let locale = UnitsDisplayNameV1::make_locale(prefs.locale_preferences);
let locale = UnitsDisplayNamesV1::make_locale(prefs.locale_preferences);
let decimal_formatter =
DecimalFormatter::try_new((&prefs).into(), DecimalFormatterOptions::default())?;

Expand Down Expand Up @@ -134,12 +134,12 @@ impl UnitsFormatter {
) -> Result<Self, DataError>
where
D: ?Sized
+ DataProvider<super::super::provider::units::display_name::UnitsDisplayNameV1>
+ DataProvider<super::super::provider::units::display_names::UnitsDisplayNamesV1>
+ DataProvider<icu_decimal::provider::DecimalSymbolsV1>
+ DataProvider<icu_decimal::provider::DecimalDigitsV1>
+ DataProvider<icu_plurals::provider::PluralsCardinalV1>,
{
let locale = UnitsDisplayNameV1::make_locale(prefs.locale_preferences);
let locale = UnitsDisplayNamesV1::make_locale(prefs.locale_preferences);
let decimal_formatter = DecimalFormatter::try_new_unstable(
provider,
(&prefs).into(),
Expand Down
6 changes: 3 additions & 3 deletions components/experimental/src/duration/formatter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
// called LICENSE at the top level of the ICU4X source tree
// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).

use crate::dimension::provider::units::display_name::UnitsDisplayNameV1;
use crate::dimension::provider::units::display_names::UnitsDisplayNamesV1;
use crate::dimension::units::formatter::{UnitsFormatter, UnitsFormatterPreferences};
use crate::dimension::units::options::{UnitsFormatterOptions, Width};
use crate::duration::options::FieldStyle;
Expand Down Expand Up @@ -135,7 +135,7 @@ impl DurationUnitFormatter {

fn try_new_unstable<
D: ?Sized
+ DataProvider<UnitsDisplayNameV1>
+ DataProvider<UnitsDisplayNamesV1>
+ DataProvider<icu_decimal::provider::DecimalSymbolsV1>
+ DataProvider<icu_decimal::provider::DecimalDigitsV1>
+ DataProvider<icu_plurals::provider::PluralsCardinalV1>,
Expand Down Expand Up @@ -231,7 +231,7 @@ impl DurationFormatter {
#[doc = icu_provider::gen_buffer_unstable_docs!(UNSTABLE, Self::try_new)]
pub fn try_new_unstable<
D: DataProvider<provider::DigitalDurationDataV1>
+ DataProvider<UnitsDisplayNameV1>
+ DataProvider<UnitsDisplayNamesV1>
+ DataProvider<DecimalSymbolsV1>
+ DataProvider<DecimalDigitsV1>
+ DataProvider<icu_plurals::provider::PluralsCardinalV1>
Expand Down
34 changes: 17 additions & 17 deletions components/experimental/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ pub mod provider {
impl_currency_displayname_v1!(Baked);
impl_currency_patterns_data_v1!(Baked);
impl_currency_extended_data_v1!(Baked);
impl_units_display_name_v1!(Baked);
impl_units_display_names_v1!(Baked);
impl_units_names_area_core_v1!(Baked);
impl_units_names_area_extended_v1!(Baked);
impl_units_names_area_outlier_v1!(Baked);
Expand Down Expand Up @@ -123,22 +123,22 @@ pub mod provider {
super::dimension::provider::currency::extended::CurrencyExtendedDataV1::INFO,
super::dimension::provider::percent::PercentEssentialsV1::INFO,
super::dimension::provider::units::essentials::UnitsEssentialsV1::INFO,
super::dimension::provider::units::display_name::UnitsDisplayNameV1::INFO,
super::dimension::provider::units::categorized_display_name::UnitsNamesAreaCoreV1::INFO,
super::dimension::provider::units::categorized_display_name::UnitsNamesAreaExtendedV1::INFO,
super::dimension::provider::units::categorized_display_name::UnitsNamesAreaOutlierV1::INFO,
super::dimension::provider::units::categorized_display_name::UnitsNamesDurationCoreV1::INFO,
super::dimension::provider::units::categorized_display_name::UnitsNamesDurationExtendedV1::INFO,
super::dimension::provider::units::categorized_display_name::UnitsNamesDurationOutlierV1::INFO,
super::dimension::provider::units::categorized_display_name::UnitsNamesLengthCoreV1::INFO,
super::dimension::provider::units::categorized_display_name::UnitsNamesLengthExtendedV1::INFO,
super::dimension::provider::units::categorized_display_name::UnitsNamesLengthOutlierV1::INFO,
super::dimension::provider::units::categorized_display_name::UnitsNamesMassCoreV1::INFO,
super::dimension::provider::units::categorized_display_name::UnitsNamesMassExtendedV1::INFO,
super::dimension::provider::units::categorized_display_name::UnitsNamesMassOutlierV1::INFO,
super::dimension::provider::units::categorized_display_name::UnitsNamesVolumeCoreV1::INFO,
super::dimension::provider::units::categorized_display_name::UnitsNamesVolumeExtendedV1::INFO,
super::dimension::provider::units::categorized_display_name::UnitsNamesVolumeOutlierV1::INFO,
super::dimension::provider::units::display_names::UnitsDisplayNamesV1::INFO,
super::dimension::provider::units::categorized_display_names::UnitsNamesAreaCoreV1::INFO,
super::dimension::provider::units::categorized_display_names::UnitsNamesAreaExtendedV1::INFO,
super::dimension::provider::units::categorized_display_names::UnitsNamesAreaOutlierV1::INFO,
super::dimension::provider::units::categorized_display_names::UnitsNamesDurationCoreV1::INFO,
super::dimension::provider::units::categorized_display_names::UnitsNamesDurationExtendedV1::INFO,
super::dimension::provider::units::categorized_display_names::UnitsNamesDurationOutlierV1::INFO,
super::dimension::provider::units::categorized_display_names::UnitsNamesLengthCoreV1::INFO,
super::dimension::provider::units::categorized_display_names::UnitsNamesLengthExtendedV1::INFO,
super::dimension::provider::units::categorized_display_names::UnitsNamesLengthOutlierV1::INFO,
super::dimension::provider::units::categorized_display_names::UnitsNamesMassCoreV1::INFO,
super::dimension::provider::units::categorized_display_names::UnitsNamesMassExtendedV1::INFO,
super::dimension::provider::units::categorized_display_names::UnitsNamesMassOutlierV1::INFO,
super::dimension::provider::units::categorized_display_names::UnitsNamesVolumeCoreV1::INFO,
super::dimension::provider::units::categorized_display_names::UnitsNamesVolumeExtendedV1::INFO,
super::dimension::provider::units::categorized_display_names::UnitsNamesVolumeOutlierV1::INFO,
super::displaynames::provider::LanguageDisplayNamesV1::INFO,
super::duration::provider::DigitalDurationDataV1::INFO,
super::displaynames::provider::LocaleDisplayNamesV1::INFO,
Expand Down
10 changes: 5 additions & 5 deletions components/experimental/src/measure/category/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@ use icu_provider::{DataMarker, DynamicDataMarker};

use crate::{
dimension::provider::units::{
categorized_display_name::{
categorized_display_names::{
UnitsNamesAreaCoreV1, UnitsNamesAreaExtendedV1, UnitsNamesAreaOutlierV1,
UnitsNamesDurationCoreV1, UnitsNamesDurationExtendedV1, UnitsNamesDurationOutlierV1,
UnitsNamesLengthCoreV1, UnitsNamesLengthExtendedV1, UnitsNamesLengthOutlierV1,
UnitsNamesMassCoreV1, UnitsNamesMassExtendedV1, UnitsNamesMassOutlierV1,
UnitsNamesVolumeCoreV1, UnitsNamesVolumeExtendedV1, UnitsNamesVolumeOutlierV1,
},
display_name::UnitsDisplayName,
display_names::UnitsDisplayNames,
},
measure::measureunit::MeasureUnit,
};
Expand All @@ -27,9 +27,9 @@ pub mod mass;
pub mod volume;

pub trait MeasureUnitCategory {
type DataMarkerCore: DynamicDataMarker<DataStruct = UnitsDisplayName<'static>> + DataMarker;
type DataMarkerExtended: DynamicDataMarker<DataStruct = UnitsDisplayName<'static>> + DataMarker;
type DataMarkerOutlier: DynamicDataMarker<DataStruct = UnitsDisplayName<'static>> + DataMarker;
type DataMarkerCore: DynamicDataMarker<DataStruct = UnitsDisplayNames<'static>> + DataMarker;
type DataMarkerExtended: DynamicDataMarker<DataStruct = UnitsDisplayNames<'static>> + DataMarker;
type DataMarkerOutlier: DynamicDataMarker<DataStruct = UnitsDisplayNames<'static>> + DataMarker;
}

/// A [`MeasureUnit`] that is related to a specific category.
Expand Down
4 changes: 2 additions & 2 deletions provider/data/experimental/data/mod.rs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

28,510 changes: 0 additions & 28,510 deletions provider/data/experimental/data/units_display_name_v1.rs.data

This file was deleted.

28,510 changes: 28,510 additions & 0 deletions provider/data/experimental/data/units_display_names_v1.rs.data

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Loading
Loading