add all api to sort by month
This commit is contained in:
96
Sources/App/Libraries/SwiftDate/Supports/Calendars.swift
Normal file
96
Sources/App/Libraries/SwiftDate/Supports/Calendars.swift
Normal file
@@ -0,0 +1,96 @@
|
||||
//
|
||||
// SwiftDate
|
||||
// Parse, validate, manipulate, and display dates, time and timezones in Swift
|
||||
//
|
||||
// Created by Daniele Margutti
|
||||
// - Web: https://www.danielemargutti.com
|
||||
// - Twitter: https://twitter.com/danielemargutti
|
||||
// - Mail: hello@danielemargutti.com
|
||||
//
|
||||
// Copyright © 2019 Daniele Margutti. Licensed under MIT License.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
public typealias Calendars = Calendar.Identifier
|
||||
|
||||
public protocol CalendarConvertible {
|
||||
func toCalendar() -> Calendar
|
||||
}
|
||||
|
||||
extension Calendar: CalendarConvertible {
|
||||
|
||||
public func toCalendar() -> Calendar {
|
||||
return self
|
||||
}
|
||||
|
||||
internal static func newCalendar(_ calendar: CalendarConvertible, configure: ((inout Calendar) -> Void)? = nil) -> Calendar {
|
||||
var cal = calendar.toCalendar()
|
||||
configure?(&cal)
|
||||
return cal
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
extension Calendar.Identifier: CalendarConvertible {
|
||||
|
||||
public func toCalendar() -> Calendar {
|
||||
return Calendar(identifier: self)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// MARK: - Support for Calendar.Identifier encoding with Codable
|
||||
|
||||
extension Calendar.Identifier: CustomStringConvertible {
|
||||
|
||||
public var description: String {
|
||||
switch self {
|
||||
case .gregorian: return "gregorian"
|
||||
case .buddhist: return "buddhist"
|
||||
case .chinese: return "chinese"
|
||||
case .coptic: return "coptic"
|
||||
case .ethiopicAmeteMihret: return "ethiopicAmeteMihret"
|
||||
case .ethiopicAmeteAlem: return "ethiopicAmeteAlem"
|
||||
case .hebrew: return "hebrew"
|
||||
case .iso8601: return "iso8601"
|
||||
case .indian: return "indian"
|
||||
case .islamic: return "islamic"
|
||||
case .islamicCivil: return "islamicCivil"
|
||||
case .japanese: return "japanese"
|
||||
case .persian: return "persian"
|
||||
case .republicOfChina: return "republicOfChina"
|
||||
case .islamicTabular: return "islamicTabular"
|
||||
case .islamicUmmAlQura: return "islamicUmmAlQura"
|
||||
@unknown default:
|
||||
fatalError("Unsupported calendar \(self)")
|
||||
}
|
||||
}
|
||||
|
||||
public init(_ rawValue: String) {
|
||||
switch rawValue {
|
||||
case Calendar.Identifier.gregorian.description: self = .gregorian
|
||||
case Calendar.Identifier.buddhist.description: self = .buddhist
|
||||
case Calendar.Identifier.chinese.description: self = .chinese
|
||||
case Calendar.Identifier.coptic.description: self = .coptic
|
||||
case Calendar.Identifier.ethiopicAmeteMihret.description: self = .ethiopicAmeteMihret
|
||||
case Calendar.Identifier.ethiopicAmeteAlem.description: self = .ethiopicAmeteAlem
|
||||
case Calendar.Identifier.hebrew.description: self = .hebrew
|
||||
case Calendar.Identifier.iso8601.description: self = .iso8601
|
||||
case Calendar.Identifier.indian.description: self = .indian
|
||||
case Calendar.Identifier.islamic.description: self = .islamic
|
||||
case Calendar.Identifier.islamicCivil.description: self = .islamicCivil
|
||||
case Calendar.Identifier.japanese.description: self = .japanese
|
||||
case Calendar.Identifier.persian.description: self = .persian
|
||||
case Calendar.Identifier.republicOfChina.description: self = .republicOfChina
|
||||
case Calendar.Identifier.islamicTabular.description: self = .islamicTabular
|
||||
case Calendar.Identifier.islamicTabular.description: self = .islamicTabular
|
||||
case Calendar.Identifier.islamicUmmAlQura.description: self = .islamicUmmAlQura
|
||||
default:
|
||||
let defaultCalendar = SwiftDate.defaultRegion.calendar.identifier
|
||||
debugPrint("Calendar Identifier '\(rawValue)' not recognized. Using default (\(defaultCalendar))")
|
||||
self = defaultCalendar
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user