From 5b76b6008fbcedbd80b2c3d256e57b1a9bb1a690 Mon Sep 17 00:00:00 2001 From: Robert Bastian <4706271+robertbastian@users.noreply.github.com> Date: Mon, 2 Oct 2023 08:20:37 +0200 Subject: [PATCH] imports --- .../locid_transform/src/fallback/mod.rs | 37 ++++++++++++++++++- ffi/diplomat/src/fallbacker.rs | 2 +- provider/adapters/src/fallback/mod.rs | 2 +- provider/core/src/fallback.rs | 8 ++-- provider/datagen/src/driver.rs | 2 +- 5 files changed, 43 insertions(+), 8 deletions(-) diff --git a/components/locid_transform/src/fallback/mod.rs b/components/locid_transform/src/fallback/mod.rs index e2464c5450f..6b13e020143 100644 --- a/components/locid_transform/src/fallback/mod.rs +++ b/components/locid_transform/src/fallback/mod.rs @@ -2,7 +2,42 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). -//! Support types for locale fallback. +//! Tools for locale fallback, enabling arbitrary input locales to be mapped into the nearest +//! locale with data. +//! +//! The algorithm implemented in this module is called [Flexible Vertical Fallback]( +//! https://docs.google.com/document/d/1Mp7EUyl-sFh_HZYgyeVwj88vJGpCBIWxzlCwGgLCDwM/edit). +//! Watch [#2243](https://github.com/unicode-org/icu4x/issues/2243) to track improvements to +//! this algorithm and steps to enshrine the algorithm in CLDR. +//! +//! # Examples +//! +//! ``` +//! use icu_locid::locale; +//! use icu_locid_transform::LocaleFallbacker; +//! +//! // Set up a LocaleFallbacker with data. +//! let fallbacker = LocaleFallbacker::new(); +//! +//! // Create a LocaleFallbackerIterator with a default configuration. +//! // By default, uses language priority with no additional extension keywords. +//! let mut fallback_iterator = fallbacker +//! .for_config(Default::default()) +//! .fallback_for(locale!("hi-Latn-IN").into()); +//! +//! // Run the algorithm and check the results. +//! assert_eq!(fallback_iterator.get(), &locale!("hi-Latn-IN").into()); +//! fallback_iterator.step(); +//! assert_eq!(fallback_iterator.get(), &locale!("hi-Latn").into()); +//! fallback_iterator.step(); +//! assert_eq!(fallback_iterator.get(), &locale!("en-IN").into()); +//! fallback_iterator.step(); +//! assert_eq!(fallback_iterator.get(), &locale!("en-001").into()); +//! fallback_iterator.step(); +//! assert_eq!(fallback_iterator.get(), &locale!("en").into()); +//! fallback_iterator.step(); +//! assert_eq!(fallback_iterator.get(), &locale!("und").into()); +//! ``` use crate::provider::*; use icu_locid::extensions::unicode::Value; diff --git a/ffi/diplomat/src/fallbacker.rs b/ffi/diplomat/src/fallbacker.rs index d616d503684..b3f21b7530a 100644 --- a/ffi/diplomat/src/fallbacker.rs +++ b/ffi/diplomat/src/fallbacker.rs @@ -8,8 +8,8 @@ pub mod ffi { use icu_locid_transform::fallback::LocaleFallbackConfig; use icu_locid_transform::fallback::LocaleFallbackIterator; use icu_locid_transform::fallback::LocaleFallbackPriority; - use icu_locid_transform::fallback::LocaleFallbacker; use icu_locid_transform::fallback::LocaleFallbackerWithConfig; + use icu_locid_transform::LocaleFallbacker; use crate::{ errors::ffi::ICU4XError, locale::ffi::ICU4XLocale, provider::ffi::ICU4XDataProvider, diff --git a/provider/adapters/src/fallback/mod.rs b/provider/adapters/src/fallback/mod.rs index be5e79a524f..c0a05d14ec2 100644 --- a/provider/adapters/src/fallback/mod.rs +++ b/provider/adapters/src/fallback/mod.rs @@ -126,7 +126,7 @@ impl

LocaleFallbackProvider

{ /// /// ``` /// use icu_locid::locale; - /// use icu_locid_transform::fallback::LocaleFallbacker; + /// use icu_locid_transform::LocaleFallbacker; /// use icu_provider::hello_world::*; /// use icu_provider::prelude::*; /// use icu_provider_adapters::fallback::LocaleFallbackProvider; diff --git a/provider/core/src/fallback.rs b/provider/core/src/fallback.rs index c1cb4f6c37a..5c4e13b8da6 100644 --- a/provider/core/src/fallback.rs +++ b/provider/core/src/fallback.rs @@ -65,7 +65,7 @@ pub struct LocaleFallbackConfig { /// use icu_locid::locale; /// use icu_locid_transform::fallback::LocaleFallbackConfig; /// use icu_locid_transform::fallback::LocaleFallbackPriority; - /// use icu_locid_transform::fallback::LocaleFallbacker; + /// use icu_locid_transform::LocaleFallbacker; /// /// // Set up the fallback iterator. /// let fallbacker = LocaleFallbacker::new(); @@ -93,7 +93,7 @@ pub struct LocaleFallbackConfig { /// use icu_locid::locale; /// use icu_locid_transform::fallback::LocaleFallbackConfig; /// use icu_locid_transform::fallback::LocaleFallbackPriority; - /// use icu_locid_transform::fallback::LocaleFallbacker; + /// use icu_locid_transform::LocaleFallbacker; /// /// // Set up the fallback iterator. /// let fallbacker = LocaleFallbacker::new(); @@ -122,7 +122,7 @@ pub struct LocaleFallbackConfig { /// ``` /// use icu_locid::locale; /// use icu_locid_transform::fallback::LocaleFallbackConfig; - /// use icu_locid_transform::fallback::LocaleFallbacker; + /// use icu_locid_transform::LocaleFallbacker; /// /// // Set up the fallback iterator. /// let fallbacker = LocaleFallbacker::new(); @@ -159,7 +159,7 @@ pub struct LocaleFallbackConfig { /// use icu_locid_transform::fallback::LocaleFallbackConfig; /// use icu_locid_transform::fallback::LocaleFallbackPriority; /// use icu_locid_transform::fallback::LocaleFallbackSupplement; - /// use icu_locid_transform::fallback::LocaleFallbacker; + /// use icu_locid_transform::LocaleFallbacker; /// /// // Set up the fallback iterator. /// let fallbacker = LocaleFallbacker::new(); diff --git a/provider/datagen/src/driver.rs b/provider/datagen/src/driver.rs index 91e6d1b7218..78faac91c61 100644 --- a/provider/datagen/src/driver.rs +++ b/provider/datagen/src/driver.rs @@ -7,7 +7,7 @@ use crate::FallbackMode; use icu_locid::extensions::unicode::key; use icu_locid::LanguageIdentifier; use icu_locid_transform::fallback::LocaleFallbackIterator; -use icu_locid_transform::fallback::LocaleFallbacker; +use icu_locid_transform::LocaleFallbacker; use icu_provider::datagen::*; use icu_provider::prelude::*; use once_cell::sync::Lazy;