icu_casemap

Struct TitlecaseMapper

Source
pub struct TitlecaseMapper<CM> { /* private fields */ }
Expand description

A wrapper around CaseMapper that can compute titlecasing stuff, and is able to load additional data to support the non-legacy “head adjustment” behavior.

Most methods for this type live on TitlecaseMapperBorrowed, which you can obtain via TitlecaseMapper::new() or TitlecaseMapper::as_borrowed().

By default, TitlecaseMapperBorrowed::titlecase_segment() and TitlecaseMapperBorrowed::titlecase_segment_to_string() perform “leading adjustment”, where they wait till the first relevant character to begin titlecasing. For example, in the string 'twixt, the apostrophe is ignored because the word starts at the first “t”, which will get titlecased (producing 'Twixt). Other punctuation will also be ignored, like in the string «hello», which will get titlecased to «Hello».

This is a separate type from CaseMapper because it loads the additional data required by LeadingAdjustment::Auto to perform the best possible leading adjustment.

If you are planning on only using LeadingAdjustment::None or LeadingAdjustment::ToCased, consider using CaseMapper directly; this type will have no additional behavior.

§Examples

Basic casemapping behavior:

use icu::casemap::TitlecaseMapper;
use icu::locale::langid;

let cm = TitlecaseMapper::new();
let root = langid!("und");

let default_options = Default::default();

// note that the subsequent words are not titlecased, this function assumes
// that the entire string is a single segment and only titlecases at the beginning.
assert_eq!(cm.titlecase_segment_to_string("hEllO WorLd", &root, default_options), "Hello world");
assert_eq!(cm.titlecase_segment_to_string("Γειά σου Κόσμε", &root, default_options), "Γειά σου κόσμε");
assert_eq!(cm.titlecase_segment_to_string("नमस्ते दुनिया", &root, default_options), "नमस्ते दुनिया");
assert_eq!(cm.titlecase_segment_to_string("Привет мир", &root, default_options), "Привет мир");

// Some behavior is language-sensitive
assert_eq!(cm.titlecase_segment_to_string("istanbul", &root, default_options), "Istanbul");
assert_eq!(cm.titlecase_segment_to_string("istanbul", &langid!("tr"), default_options), "İstanbul"); // Turkish dotted i

assert_eq!(cm.titlecase_segment_to_string("և Երևանի", &root, default_options), "Եւ երևանի");
assert_eq!(cm.titlecase_segment_to_string("և Երևանի", &langid!("hy"), default_options), "Եվ երևանի"); // Eastern Armenian ech-yiwn ligature

assert_eq!(cm.titlecase_segment_to_string("ijkdijk", &root, default_options), "Ijkdijk");
assert_eq!(cm.titlecase_segment_to_string("ijkdijk", &langid!("nl"), default_options), "IJkdijk"); // Dutch IJ digraph

Implementations§

Source§

impl TitlecaseMapper<CaseMapper>

Source

pub fn try_new_with_buffer_provider( provider: &(impl BufferProvider + ?Sized), ) -> Result<Self, DataError>

A version of [Self :: new] that uses custom data provided by a BufferProvider.

Enabled with the serde feature.

📚 Help choosing a constructor

Source

pub fn try_new_unstable<P>(provider: &P) -> Result<Self, DataError>
where P: DataProvider<CaseMapV1> + DataProvider<PropertyEnumGeneralCategoryV1> + ?Sized,

A version of Self::new that uses custom data provided by a DataProvider.

📚 Help choosing a constructor

⚠️ The bounds on provider may change over time, including in SemVer minor releases.
Source§

impl TitlecaseMapper<CaseMapper>

Source

pub const fn new() -> TitlecaseMapperBorrowed<'static>

A constructor which creates a TitlecaseMapperBorrowed using compiled data

Enabled with the compiled_data Cargo feature.

📚 Help choosing a constructor

Source§

impl<CM: AsRef<CaseMapper>> TitlecaseMapper<CM>

Source

pub fn try_new_with_mapper_with_buffer_provider( provider: &(impl BufferProvider + ?Sized), casemapper: CM, ) -> Result<Self, DataError>

A version of [Self :: new_with_mapper] that uses custom data provided by a BufferProvider.

Enabled with the serde feature.

📚 Help choosing a constructor

Source

pub const fn new_with_mapper(casemapper: CM) -> Self

A constructor which creates a TitlecaseMapper from an existing CaseMapper (either owned or as a reference) and compiled data

Enabled with the compiled_data Cargo feature.

📚 Help choosing a constructor

Source

pub fn try_new_with_mapper_unstable<P>( provider: &P, casemapper: CM, ) -> Result<Self, DataError>
where P: DataProvider<CaseMapV1> + DataProvider<PropertyEnumGeneralCategoryV1> + ?Sized,

Construct this object to wrap an existing CaseMapper (or a reference to one), loading additional data as needed. A version of Self::new_with_mapper that uses custom data provided by a DataProvider.

📚 Help choosing a constructor

⚠️ The bounds on provider may change over time, including in SemVer minor releases.
Source

pub fn as_borrowed(&self) -> TitlecaseMapperBorrowed<'_>

Constructs a borrowed version of this type for more efficient querying.

Trait Implementations§

Source§

impl<CM: Clone> Clone for TitlecaseMapper<CM>

Source§

fn clone(&self) -> TitlecaseMapper<CM>

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<CM: Debug> Debug for TitlecaseMapper<CM>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<CM> Freeze for TitlecaseMapper<CM>
where CM: Freeze,

§

impl<CM> RefUnwindSafe for TitlecaseMapper<CM>
where CM: RefUnwindSafe,

§

impl<CM> Send for TitlecaseMapper<CM>
where CM: Send,

§

impl<CM> Sync for TitlecaseMapper<CM>
where CM: Sync,

§

impl<CM> Unpin for TitlecaseMapper<CM>
where CM: Unpin,

§

impl<CM> UnwindSafe for TitlecaseMapper<CM>
where CM: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> ErasedDestructor for T
where T: 'static,