/// The weekly item data for the list of weeklies.
public struct Weekly: Hashable, Identifiable, Sendable {
/// The number of the week. The first week starts with 1.
public let week: Int
/// The weekly subject/topic.
public let topic: String
/// The US formatted date the weekly.
public let formattedDate: String
/// How many rants have beeon posted for this weekly.
public let numberOfRants: Int
public var id: Int { week }
public init(week: Int, topic: String, formattedDate: String, numberOfRants: Int) {
self.week = week
self.topic = topic
self.formattedDate = formattedDate
self.numberOfRants = numberOfRants
}
}
extension Weekly {
struct CodingData: Codable {
let week: Int
let prompt: String
let date: String
let num_rants: Int
struct List: Codable {
let weeks: [CodingData]
}
}
}
extension Weekly.CodingData {
var decoded: Weekly {
.init(
week: week,
topic: prompt,
formattedDate: date,
numberOfRants: num_rants
)
}
}