Skip to content
This repository was archived by the owner on Jan 23, 2023. It is now read-only.

Commit 1d57ba9

Browse files
tarekghjkotas
authored andcommitted
Fix Hebrew calendar month names list (dotnet/coreclr#16247)
* Fix Hebrew calendar month names list Signed-off-by: dotnet-bot-corefx-mirror <dotnet-bot@microsoft.com>
1 parent 85ebc81 commit 1d57ba9

File tree

1 file changed

+26
-5
lines changed

1 file changed

+26
-5
lines changed

src/Common/src/CoreLib/System/Globalization/CalendarData.Unix.cs

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,20 @@ private bool LoadCalendarDataFromSystem(String localeName, CalendarId calendarId
4545
result &= EnumCalendarInfo(localeName, calendarId, CalendarDataType.DayNames, out this.saDayNames);
4646
result &= EnumCalendarInfo(localeName, calendarId, CalendarDataType.AbbrevDayNames, out this.saAbbrevDayNames);
4747
result &= EnumCalendarInfo(localeName, calendarId, CalendarDataType.SuperShortDayNames, out this.saSuperShortDayNames);
48-
result &= EnumMonthNames(localeName, calendarId, CalendarDataType.MonthNames, out this.saMonthNames);
49-
result &= EnumMonthNames(localeName, calendarId, CalendarDataType.AbbrevMonthNames, out this.saAbbrevMonthNames);
50-
result &= EnumMonthNames(localeName, calendarId, CalendarDataType.MonthGenitiveNames, out this.saMonthGenitiveNames);
51-
result &= EnumMonthNames(localeName, calendarId, CalendarDataType.AbbrevMonthGenitiveNames, out this.saAbbrevMonthGenitiveNames);
48+
49+
string leapHebrewMonthName = null;
50+
result &= EnumMonthNames(localeName, calendarId, CalendarDataType.MonthNames, out this.saMonthNames, ref leapHebrewMonthName);
51+
if (leapHebrewMonthName != null)
52+
{
53+
// In Hebrew calendar, get the leap month name Adar II and override the non-leap month 7
54+
Debug.Assert(calendarId == CalendarId.HEBREW && saMonthNames.Length == 13);
55+
saLeapYearMonthNames = (string[]) saMonthNames.Clone();
56+
saLeapYearMonthNames[6] = leapHebrewMonthName;
57+
}
58+
result &= EnumMonthNames(localeName, calendarId, CalendarDataType.AbbrevMonthNames, out this.saAbbrevMonthNames, ref leapHebrewMonthName);
59+
result &= EnumMonthNames(localeName, calendarId, CalendarDataType.MonthGenitiveNames, out this.saMonthGenitiveNames, ref leapHebrewMonthName);
60+
result &= EnumMonthNames(localeName, calendarId, CalendarDataType.AbbrevMonthGenitiveNames, out this.saAbbrevMonthGenitiveNames, ref leapHebrewMonthName);
61+
5262
result &= EnumEraNames(localeName, calendarId, CalendarDataType.EraNames, out this.saEraNames);
5363
result &= EnumEraNames(localeName, calendarId, CalendarDataType.AbbrevEraNames, out this.saAbbrevEraNames);
5464

@@ -241,7 +251,7 @@ private static int CountOccurrences(string input, char value, ref int index)
241251
return index - startIndex;
242252
}
243253

244-
private static bool EnumMonthNames(string localeName, CalendarId calendarId, CalendarDataType dataType, out string[] monthNames)
254+
private static bool EnumMonthNames(string localeName, CalendarId calendarId, CalendarDataType dataType, out string[] monthNames, ref string leapHebrewMonthName)
245255
{
246256
monthNames = null;
247257

@@ -257,6 +267,17 @@ private static bool EnumMonthNames(string localeName, CalendarId calendarId, Cal
257267
callbackContext.Results.Add(string.Empty);
258268
}
259269

270+
if (callbackContext.Results.Count > 13)
271+
{
272+
Debug.Assert(calendarId == CalendarId.HEBREW && callbackContext.Results.Count == 14);
273+
274+
if (calendarId == CalendarId.HEBREW)
275+
{
276+
leapHebrewMonthName = callbackContext.Results[13];
277+
}
278+
callbackContext.Results.RemoveRange(13, callbackContext.Results.Count - 13);
279+
}
280+
260281
monthNames = callbackContext.Results.ToArray();
261282
}
262283

0 commit comments

Comments
 (0)