import Foundation struct ContentPage: HtmlProducer { private let linkTitle: String private let description: String private let language: ContentLanguage private let dateString: String private let title: String private let tags: [FeedEntryData.Tag] private let navigationBarLinks: [NavigationBar.Link] private let pageContent: String private let headers: String private let footers: String init(language: ContentLanguage, dateString: String, title: String, tags: [FeedEntryData.Tag], linkTitle: String, description: String, navigationBarLinks: [NavigationBar.Link], pageContent: String, headers: String, footers: [String]) { self.language = language self.dateString = dateString self.title = title self.tags = tags self.linkTitle = linkTitle self.description = description self.navigationBarLinks = navigationBarLinks self.pageContent = pageContent self.headers = headers self.footers = footers.joined() } func populate(_ result: inout String) { // TODO: Add headers and footers from page content result += "" result += PageHead(title: title, description: description, additionalHeaders: headers).content result += "" result += NavigationBar(links: navigationBarLinks).content result += "
" result += "
" result += "

\(dateString)

" result += "

\(title)

" result += TagList(tags: tags).content result += symbols result += pageContent result += "
" result += footers result += "" // Close content } #warning("Select only required symbols") private let symbols: String = { var result = "
" for icon in PageIcon.allCases { result += icon.icon } result += "
" return result }() }