@@ -211,36 +211,42 @@ extension CalendarId {
211211 }
212212}
213213
214-
215214extension CalendarId {
216- public func numberOfMonth( y: Int , m: String ) -> Int ? {
215+ /// New, year-aware adapter with idiomatic naming.
216+ public func monthNumber( for month: String , in year: Int ) -> Int ? {
217217 switch self {
218218 case . gregorian:
219- return GregorianCalendar . numberOfMonth ( m )
219+ return GregorianCalendar . numberOfMonth ( month )
220220 case . julian:
221- return JulianCalendar . numberOfMonth ( m )
221+ return JulianCalendar . numberOfMonth ( month )
222222 case . swedish:
223- return SwedishCalendar . numberOfMonth ( m )
223+ return SwedishCalendar . numberOfMonth ( month )
224224 case . frenchRepublican:
225- return FrenchRepublicanCalendar . numberOfMonth ( m )
225+ return FrenchRepublicanCalendar . numberOfMonth ( month )
226226 case . jewish:
227- return JewishCalendar . numberOfMonth ( year: y , month: m )
227+ return JewishCalendar . numberOfMonth ( year: year , month: month )
228228 case . civilIslamic:
229- return CivilIslamicCalendar . numberOfMonth ( m )
229+ return CivilIslamicCalendar . numberOfMonth ( month )
230230 case . saka:
231- return SakaCalendar . numberOfMonth ( m )
231+ return SakaCalendar . numberOfMonth ( month )
232232 case . egyptian:
233- return EgyptianCalendar . numberOfMonth ( m )
233+ return EgyptianCalendar . numberOfMonth ( month )
234234 case . coptic:
235- return CopticCalendar . numberOfMonth ( m )
235+ return CopticCalendar . numberOfMonth ( month )
236236 case . ethiopian:
237- return EthiopianCalendar . numberOfMonth ( m )
237+ return EthiopianCalendar . numberOfMonth ( month )
238238 case . bahai:
239- return BahaiCalendar . numberOfMonth ( m )
239+ return BahaiCalendar . numberOfMonth ( month )
240240 case . mesoamericanLongCount:
241241 return nil
242242 }
243243 }
244+
245+ /// Deprecated: Use monthNumber(for:in:) instead.
246+ @available ( * , deprecated, message: " Use monthNumber(for:in:) instead " )
247+ public func numberOfMonth( y: Int , m: String ) -> Int ? {
248+ return monthNumber ( for: m, in: y)
249+ }
244250}
245251
246252extension CalendarId {
@@ -275,3 +281,21 @@ extension CalendarId {
275281 }
276282}
277283
284+ public protocol WeekdayProtocol {
285+ var numberOfDays : Int { get }
286+ func weekday( forYear year: Int , month: Int , day: Int ) -> Int
287+ func name( ofWeekday day: Int ) -> String
288+ }
289+
290+ public protocol CalendarProtocol : Sendable {
291+ var calendarId : String { get }
292+
293+ func isValidDate( year: Int , month: Int , day: Int ) -> Bool
294+ func monthName( forYear year: Int , month: Int ) -> String
295+ func daysInMonth( year: Int , month: Int ) -> Int
296+ func isProleptic( julianDay jdn: Int ) -> Bool
297+ func monthNumber( for month: String , in year: Int ) -> Int ?
298+
299+ func jdn( forYear year: Int , month: Int , day: Int ) -> Int
300+ func date( fromJDN jdn: Int ) -> ( Int , Int , Int )
301+ }
0 commit comments