30 lines
705 B
Swift
30 lines
705 B
Swift
import Foundation
|
|
|
|
enum BugPriority: String, Codable, Comparable, CaseIterable {
|
|
case p0 = "P0"
|
|
case p1 = "P1"
|
|
case p2 = "P2"
|
|
case p3 = "P3"
|
|
case unknown
|
|
|
|
init(from decoder: Decoder) throws {
|
|
let container = try decoder.singleValueContainer()
|
|
let raw = try container.decode(String.self)
|
|
self = BugPriority(rawValue: raw) ?? .unknown
|
|
}
|
|
|
|
static func < (lhs: BugPriority, rhs: BugPriority) -> Bool {
|
|
order(lhs) < order(rhs)
|
|
}
|
|
|
|
private static func order(_ priority: BugPriority) -> Int {
|
|
switch priority {
|
|
case .p0: 0
|
|
case .p1: 1
|
|
case .p2: 2
|
|
case .p3: 3
|
|
case .unknown: 4
|
|
}
|
|
}
|
|
}
|