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

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion components/datetime/src/pattern/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ mod names;
#[allow(clippy::module_inception)] // the file pattern.rs should contain DateTimePattern
mod pattern;

use crate::error::ErrorField;
pub use crate::error::ErrorField;
pub use formatter::DateTimePatternFormatter;
pub use formatter::FormattedDateTimePattern;
use icu_pattern::SinglePlaceholderPattern;
Expand Down
27 changes: 22 additions & 5 deletions components/datetime/src/pattern/pattern.rs
Original file line number Diff line number Diff line change
Expand Up @@ -115,11 +115,6 @@ impl DateTimePattern {
Ok(Self { pattern })
}

#[doc(hidden)] // TODO(#4467): Internal API
pub fn from_runtime_pattern(pattern: runtime::Pattern<'static>) -> Self {
Self { pattern }
}

pub(crate) fn iter_items(&self) -> impl Iterator<Item = PatternItem> + '_ {
self.pattern.items.iter()
}
Expand All @@ -129,6 +124,28 @@ impl DateTimePattern {
}
}

impl<'a> From<runtime::Pattern<'a>> for DateTimePattern {
fn from(pattern: runtime::Pattern<'a>) -> Self {
Self {
pattern: pattern.into_owned(),
}
}
}

impl<'a> From<runtime::PatternBorrowed<'a>> for DateTimePattern {
fn from(pattern: runtime::PatternBorrowed<'a>) -> Self {
Self {
pattern: pattern.as_pattern().into_owned(),
}
}
}

impl From<DateTimePattern> for runtime::Pattern<'_> {
fn from(value: DateTimePattern) -> Self {
value.pattern
}
}

impl FromStr for DateTimePattern {
type Err = PatternError;
fn from_str(s: &str) -> Result<Self, Self::Err> {
Expand Down
16 changes: 16 additions & 0 deletions components/datetime/src/provider/fields/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ pub(crate) mod symbols;
use displaydoc::Display;
pub use length::{FieldLength, FieldNumericOverrides, LengthError};
pub use symbols::*;
use writeable::Writeable;

#[cfg(any(feature = "experimental", feature = "datagen"))]
pub mod components;
Expand Down Expand Up @@ -77,6 +78,21 @@ impl Field {
}
}

impl Writeable for Field {
fn write_to<W: core::fmt::Write + ?Sized>(&self, sink: &mut W) -> core::fmt::Result {
let ch: char = self.symbol.into();
for _ in 0..self.length.to_len() {
sink.write_char(ch)?;
}
Ok(())
}
fn writeable_length_hint(&self) -> writeable::LengthHint {
writeable::LengthHint::exact(self.length.to_len())
}
}

writeable::impl_display_with_writeable!(Field);

impl FieldULE {
#[inline]
pub(crate) fn validate_byte_pair(bytes: (u8, u8)) -> Result<(), zerovec::ule::UleError> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,10 +77,7 @@ impl Writeable for Pattern<'_> {
PatternItem::Field(field) => {
dump_buffer_into_formatter(&buffer, formatter)?;
buffer.clear();
let ch: char = field.symbol.into();
for _ in 0..field.length.to_len() {
formatter.write_char(ch)?;
}
field.write_to(formatter)?;
if let FieldSymbol::DecimalSecond(decimal_second) = field.symbol {
formatter.write_char('.')?;
for _ in 0..(decimal_second as u8) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,6 @@ impl Default for PatternMetadata {
}

impl Pattern<'_> {
#[cfg(feature = "datagen")]
pub(crate) fn into_owned(self) -> Pattern<'static> {
Pattern {
items: self.items.into_owned(),
Expand Down
4 changes: 4 additions & 0 deletions components/datetime/src/provider/skeleton/helpers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,10 @@ impl SkeletonQuality {
pub fn best() -> SkeletonQuality {
SkeletonQuality(0)
}
/// Returns whether this is an "excellent" match by an arbitrary definition.
pub fn is_excellent_match(self) -> bool {
self.0 < GLUE_DISTANCE
}
}

/// This function swaps out the time zone name field for the appropriate one. Skeleton matching
Expand Down
2 changes: 1 addition & 1 deletion components/datetime/src/raw/neo.rs
Original file line number Diff line number Diff line change
Expand Up @@ -734,7 +734,7 @@ impl<'a> DateTimeZonePatternDataBorrowed<'a> {

pub(crate) fn to_pattern(self) -> DateTimePattern {
let pattern = self.iter_items().collect::<runtime::Pattern>();
DateTimePattern::from_runtime_pattern(pattern)
DateTimePattern::from(pattern)
}
}

Expand Down
4 changes: 2 additions & 2 deletions components/decimal/src/provider.rs
Original file line number Diff line number Diff line change
Expand Up @@ -296,9 +296,9 @@ impl DecimalSymbols<'_> {
}

impl DecimalSymbols<'static> {
#[cfg(test)]
/// Create a new en-US format for use in testing
pub(crate) fn new_en_for_testing() -> Self {
#[cfg(feature = "datagen")]
pub fn new_en_for_testing() -> Self {
let strings = DecimalSymbolStrsBuilder {
minus_sign_prefix: VarZeroCow::new_borrowed("-"),
minus_sign_suffix: VarZeroCow::new_borrowed(""),
Expand Down

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

1,092 changes: 546 additions & 546 deletions provider/data/datetime/fingerprints.csv

Large diffs are not rendered by default.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Loading