ChWebsiteApp/CHDataManagement/Pages/ContentPage.swift
2024-12-13 11:26:34 +01:00

68 lines
2.0 KiB
Swift

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 += "<!DOCTYPE html><html lang=\"\(language.rawValue)\">"
result += PageHead(title: title, description: description, additionalHeaders: headers).content
result += "<body>"
result += NavigationBar(links: navigationBarLinks).content
result += "<main><article>"
result += "<div style=\"height: 70px;\"></div>"
result += "<h3>\(dateString)</h3>"
result += "<h1>\(title)</h1>"
result += TagList(tags: tags).content
result += symbols
result += pageContent
result += "</article></main>"
result += footers
result += "</body></html>" // Close content
}
#warning("Select only required symbols")
private let symbols: String = {
var result = "<div style='display:none'>"
for icon in PageIcon.allCases {
result += icon.icon
}
result += "</div>"
return result
}()
}