68 lines
2.0 KiB
Swift
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
|
|
}()
|
|
}
|