/// 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 ) } }