From 1461ceb733c12f3f6f563de25433d78d929361e9 Mon Sep 17 00:00:00 2001 From: mildgravitas Date: Wed, 11 Aug 2021 13:55:18 +0200 Subject: [PATCH 1/5] Only compute DateTimeFormatsV1 once when building DatePatternsV1. --- provider/cldr/src/transform/dates/patterns.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/provider/cldr/src/transform/dates/patterns.rs b/provider/cldr/src/transform/dates/patterns.rs index 6367d3e47b6..0eeaf795f7b 100644 --- a/provider/cldr/src/transform/dates/patterns.rs +++ b/provider/cldr/src/transform/dates/patterns.rs @@ -273,7 +273,7 @@ impl From<&cldr_json::Dates> for gregory::DatePatternsV1 { time_h11_h12, time_h23_h24, preferred_hour_cycle, - datetime: (&other.calendars.gregorian.datetime_formats).into(), + datetime: date_time_formats_v1, } } } From fe93a4e325584819e31ab3488624848bb1e7f820 Mon Sep 17 00:00:00 2001 From: mildgravitas Date: Thu, 26 Aug 2021 17:51:26 +0200 Subject: [PATCH 2/5] Remove unnecessary get_mut() in parse_placeholders. --- components/datetime/src/pattern/parser.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/datetime/src/pattern/parser.rs b/components/datetime/src/pattern/parser.rs index cee769477d7..c9b7edd18c3 100644 --- a/components/datetime/src/pattern/parser.rs +++ b/components/datetime/src/pattern/parser.rs @@ -144,7 +144,7 @@ impl<'p> Parser<'p> { pub fn parse_placeholders( mut self, - mut replacements: Vec, + replacements: Vec, ) -> Result, Error> { let mut chars = self.source.chars().peekable(); let mut result = vec![]; @@ -157,7 +157,7 @@ impl<'p> Parser<'p> { let ch = chars.next().ok_or(Error::UnclosedPlaceholder)?; let idx: u32 = ch.to_digit(10).ok_or(Error::UnknownSubstitution(ch))?; let replacement = replacements - .get_mut(idx as usize) + .get(idx as usize) .ok_or(Error::UnknownSubstitution(ch))?; result.extend_from_slice(replacement.items()); let ch = chars.next().ok_or(Error::UnclosedPlaceholder)?; From a6095a45686f9307244ed94f2295e044d9a303d1 Mon Sep 17 00:00:00 2001 From: mildgravitas Date: Mon, 13 Sep 2021 15:42:34 +0200 Subject: [PATCH 3/5] Cleanup redundant test fixture: combine-datetime was forked from date-time 5 months ago but the test still referred to the old file. --- components/datetime/tests/datetime.rs | 2 +- .../tests/components-combine-date-time.json | 46 ------------------- .../tests/components-combine-datetime.json | 2 +- 3 files changed, 2 insertions(+), 48 deletions(-) delete mode 100644 components/datetime/tests/fixtures/tests/components-combine-date-time.json diff --git a/components/datetime/tests/datetime.rs b/components/datetime/tests/datetime.rs index 038e1897092..9e15b6d2040 100644 --- a/components/datetime/tests/datetime.rs +++ b/components/datetime/tests/datetime.rs @@ -359,7 +359,7 @@ fn test_components_width_differences() { #[test] fn test_components_combine_datetime() { // components/datetime/tests/fixtures/tests/components-combine-date-time.json - test_fixture("components-combine-date-time"); + test_fixture("components-combine-datetime"); } #[test] diff --git a/components/datetime/tests/fixtures/tests/components-combine-date-time.json b/components/datetime/tests/fixtures/tests/components-combine-date-time.json deleted file mode 100644 index 5b50596b52e..00000000000 --- a/components/datetime/tests/fixtures/tests/components-combine-date-time.json +++ /dev/null @@ -1,46 +0,0 @@ -[ - { - "description": "Combine date and time: yMMMd + Ehm", - "input": { - "locale": "en", - "value": "2020-01-07T08:25:07.000", - "options": { - "components": { - "year": "numeric", - "month": "short", - "day": "numeric", - - "weekday": "short", - "hour": "numeric", - "minute": "numeric", - "preferences": { "hourCycle": "h12" } - } - } - }, - "output": { - "value": "Tue, Jan 7, 2020, 8:25 AM" - } - }, - { - "description": "Combine date and time with a \"full\" length glue pattern", - "input": { - "locale": "en", - "value": "2020-01-07T08:25:07.000", - "options": { - "components": { - "year": "numeric", - "month": "long", - "day": "numeric", - - "weekday": "long", - "hour": "numeric", - "minute": "numeric", - "preferences": { "hourCycle": "h12" } - } - } - }, - "output": { - "value": "Tuesday, January 7, 2020 at 8:25 AM" - } - } -] diff --git a/components/datetime/tests/fixtures/tests/components-combine-datetime.json b/components/datetime/tests/fixtures/tests/components-combine-datetime.json index fc9fcffbb13..5b50596b52e 100644 --- a/components/datetime/tests/fixtures/tests/components-combine-datetime.json +++ b/components/datetime/tests/fixtures/tests/components-combine-datetime.json @@ -40,7 +40,7 @@ } }, "output": { - "value": "Tue, Jan 7, 2020 at 8:25 AM" + "value": "Tuesday, January 7, 2020 at 8:25 AM" } } ] From 1fa2fbe62fa6f73965130a77edcf79492c72662e Mon Sep 17 00:00:00 2001 From: mildgravitas Date: Wed, 11 Aug 2021 14:59:34 +0200 Subject: [PATCH 4/5] Add a basic skeleton parsing test. --- provider/cldr/src/transform/dates/patterns.rs | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/provider/cldr/src/transform/dates/patterns.rs b/provider/cldr/src/transform/dates/patterns.rs index 0eeaf795f7b..c4796648c77 100644 --- a/provider/cldr/src/transform/dates/patterns.rs +++ b/provider/cldr/src/transform/dates/patterns.rs @@ -327,3 +327,32 @@ fn test_with_numbering_system() { // TODO(#308): Support numbering system variations. We currently throw them away. assert_eq!("d/M/yy", cs_dates.get().date.short); } + +#[test] +fn test_datetime_skeletons() { + use gregory::patterns::{PatternV1, SkeletonV1}; + use icu_locid_macros::langid; + + let cldr_paths = crate::cldr_paths::for_test(); + let provider = DatePatternsProvider::try_from(&cldr_paths as &dyn CldrPaths).unwrap(); + + let cs_dates: DataPayload = provider + .load_payload(&DataRequest { + resource_path: ResourcePath { + key: key::GREGORY_DATE_PATTERNS_V1, + options: ResourceOptions { + variant: None, + langid: Some(langid!("haw")), + }, + }, + }) + .unwrap() + .take_payload() + .unwrap(); + let skeletons = &cs_dates.get().datetime.skeletons.0; + + assert_eq!( + Some(&PatternV1::try_from("L").expect("Failed to create pattern")), + skeletons.get(&SkeletonV1::try_from("M").expect("Failed to create Skeleton")) + ); +} From 9b43425322e603febde3780dd7dd765b0164e533 Mon Sep 17 00:00:00 2001 From: mildgravitas Date: Fri, 17 Sep 2021 14:55:48 +0200 Subject: [PATCH 5/5] Update test_components_combine_datetime's comment to the correct path. --- components/datetime/tests/datetime.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/datetime/tests/datetime.rs b/components/datetime/tests/datetime.rs index 9e15b6d2040..2849dc4bb48 100644 --- a/components/datetime/tests/datetime.rs +++ b/components/datetime/tests/datetime.rs @@ -358,7 +358,7 @@ fn test_components_width_differences() { /// Tests that component::Bags can combine a date skeleton, and a time skeleton. #[test] fn test_components_combine_datetime() { - // components/datetime/tests/fixtures/tests/components-combine-date-time.json + // components/datetime/tests/fixtures/tests/components-combine-datetime.json test_fixture("components-combine-datetime"); }