import Foundation struct FeedEntry: HtmlProducer { private let data: FeedEntryData init(data: FeedEntryData) { self.data = data } private var cardLinkClassText: String { data.link != nil ? " linked-card" : "" } func populate(_ result: inout String) { result += "
" switch data.media { case .images(let images): ImageGallery(id: data.entryId, images: images).populate(&result) case .video(let videos): PostVideo(videos: videos).populate(&result) case .none: break } if let url = data.link?.url { result += "
" } else { result += "
" } result += "

\(data.textAboveTitle)

" if let title = data.title { result += "

\(title.htmlEscaped())

" } TagList(tags: data.tags).populate(&result) ContentLabels(labels: data.labels).populate(&result) result += data.text if let url = data.link { result += "" } result += "
\n" // Closes card-content, card, article } }