Skip to content

Commit 8371b92

Browse files
authored
Move DateFields::era over to being a byte slice (#7115)
Progress on #7104. I didn't touch MonthCode yet since it becomes easier after #7105 lands.
1 parent 1fda50a commit 8371b92

File tree

21 files changed

+80
-60
lines changed

21 files changed

+80
-60
lines changed

components/calendar/src/cal/abstract_gregorian.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ pub(crate) trait GregorianYears: Clone + core::fmt::Debug {
2222
// Positive if after 0 CE
2323
const EXTENDED_YEAR_OFFSET: i32 = 0;
2424

25-
fn extended_from_era_year(&self, era: Option<&str>, year: i32) -> Result<i32, UnknownEraError>;
25+
fn extended_from_era_year(&self, era: Option<&[u8]>, year: i32)
26+
-> Result<i32, UnknownEraError>;
2627

2728
fn era_year_from_extended(&self, extended_year: i32, month: u8, day: u8) -> EraYear;
2829

@@ -90,7 +91,7 @@ impl<Y: GregorianYears> DateFieldsResolver for AbstractGregorian<Y> {
9091
#[inline]
9192
fn year_info_from_era(
9293
&self,
93-
era: &str,
94+
era: &[u8],
9495
era_year: i32,
9596
) -> Result<Self::YearInfo, UnknownEraError> {
9697
Ok(self.0.extended_from_era_year(Some(era), era_year)? + Y::EXTENDED_YEAR_OFFSET)

components/calendar/src/cal/buddhist.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,13 @@ pub(crate) struct BuddhistEra;
4848
impl GregorianYears for BuddhistEra {
4949
const EXTENDED_YEAR_OFFSET: i32 = -543;
5050

51-
fn extended_from_era_year(&self, era: Option<&str>, year: i32) -> Result<i32, UnknownEraError> {
51+
fn extended_from_era_year(
52+
&self,
53+
era: Option<&[u8]>,
54+
year: i32,
55+
) -> Result<i32, UnknownEraError> {
5256
match era {
53-
Some("be") | None => Ok(year),
57+
Some(b"be") | None => Ok(year),
5458
_ => Err(UnknownEraError),
5559
}
5660
}

components/calendar/src/cal/chinese.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -562,7 +562,7 @@ impl<R: Rules> DateFieldsResolver for LunarChinese<R> {
562562
#[inline]
563563
fn year_info_from_era(
564564
&self,
565-
_era: &str,
565+
_era: &[u8],
566566
_era_year: i32,
567567
) -> Result<Self::YearInfo, UnknownEraError> {
568568
// This calendar has no era codes

components/calendar/src/cal/coptic.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,11 +89,11 @@ impl DateFieldsResolver for Coptic {
8989
#[inline]
9090
fn year_info_from_era(
9191
&self,
92-
era: &str,
92+
era: &[u8],
9393
era_year: i32,
9494
) -> Result<Self::YearInfo, UnknownEraError> {
9595
match era {
96-
"am" => Ok(era_year),
96+
b"am" => Ok(era_year),
9797
_ => Err(UnknownEraError),
9898
}
9999
}

components/calendar/src/cal/ethiopian.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,12 +79,12 @@ impl DateFieldsResolver for Ethiopian {
7979
#[inline]
8080
fn year_info_from_era(
8181
&self,
82-
era: &str,
82+
era: &[u8],
8383
era_year: i32,
8484
) -> Result<Self::YearInfo, UnknownEraError> {
8585
match (self.era_style(), era) {
86-
(EthiopianEraStyle::AmeteMihret, "am") => Ok(era_year + AMETE_MIHRET_OFFSET),
87-
(_, "aa") => Ok(era_year + AMETE_ALEM_OFFSET),
86+
(EthiopianEraStyle::AmeteMihret, b"am") => Ok(era_year + AMETE_MIHRET_OFFSET),
87+
(_, b"aa") => Ok(era_year + AMETE_ALEM_OFFSET),
8888
(_, _) => Err(UnknownEraError),
8989
}
9090
}

components/calendar/src/cal/gregorian.rs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,15 @@ impl_with_abstract_gregorian!(crate::cal::Gregorian, GregorianDateInner, CeBce,
1515
pub(crate) struct CeBce;
1616

1717
impl GregorianYears for CeBce {
18-
fn extended_from_era_year(&self, era: Option<&str>, year: i32) -> Result<i32, UnknownEraError> {
18+
fn extended_from_era_year(
19+
&self,
20+
era: Option<&[u8]>,
21+
year: i32,
22+
) -> Result<i32, UnknownEraError> {
1923
match era {
2024
None => Ok(year),
21-
Some("ad" | "ce") => Ok(year),
22-
Some("bce" | "bc") => Ok(1 - year),
25+
Some(b"ad" | b"ce") => Ok(year),
26+
Some(b"bce" | b"bc") => Ok(1 - year),
2327
Some(_) => Err(UnknownEraError),
2428
}
2529
}

components/calendar/src/cal/hebrew.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,11 +123,11 @@ impl DateFieldsResolver for Hebrew {
123123
#[inline]
124124
fn year_info_from_era(
125125
&self,
126-
era: &str,
126+
era: &[u8],
127127
era_year: i32,
128128
) -> Result<Self::YearInfo, UnknownEraError> {
129129
match era {
130-
"am" => Ok(HebrewYearInfo::compute(era_year)),
130+
b"am" => Ok(HebrewYearInfo::compute(era_year)),
131131
_ => Err(UnknownEraError),
132132
}
133133
}

components/calendar/src/cal/hijri.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -725,12 +725,12 @@ impl<R: Rules> DateFieldsResolver for Hijri<R> {
725725
#[inline]
726726
fn year_info_from_era(
727727
&self,
728-
era: &str,
728+
era: &[u8],
729729
era_year: i32,
730730
) -> Result<Self::YearInfo, UnknownEraError> {
731731
let extended_year = match era {
732-
"ah" => era_year,
733-
"bh" => 1 - era_year,
732+
b"ah" => era_year,
733+
b"bh" => 1 - era_year,
734734
_ => return Err(UnknownEraError),
735735
};
736736
Ok(self.year_info_from_extended(extended_year))

components/calendar/src/cal/indian.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,11 +82,11 @@ impl DateFieldsResolver for Indian {
8282
#[inline]
8383
fn year_info_from_era(
8484
&self,
85-
era: &str,
85+
era: &[u8],
8686
era_year: i32,
8787
) -> Result<Self::YearInfo, UnknownEraError> {
8888
match era {
89-
"shaka" => Ok(era_year),
89+
b"shaka" => Ok(era_year),
9090
_ => Err(UnknownEraError),
9191
}
9292
}

components/calendar/src/cal/iso.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,13 @@ impl_with_abstract_gregorian!(crate::cal::Iso, IsoDateInner, IsoEra, _x, IsoEra)
3131
pub(crate) struct IsoEra;
3232

3333
impl GregorianYears for IsoEra {
34-
fn extended_from_era_year(&self, era: Option<&str>, year: i32) -> Result<i32, UnknownEraError> {
34+
fn extended_from_era_year(
35+
&self,
36+
era: Option<&[u8]>,
37+
year: i32,
38+
) -> Result<i32, UnknownEraError> {
3539
match era {
36-
Some("default") | None => Ok(year),
40+
Some(b"default") | None => Ok(year),
3741
Some(_) => Err(UnknownEraError),
3842
}
3943
}

0 commit comments

Comments
 (0)