Improve asset handling

This commit is contained in:
Christoph Hagen
2024-12-16 15:36:58 +01:00
parent 31d1ecb8bd
commit b22b76fd32
21 changed files with 264 additions and 85 deletions

View File

@ -24,7 +24,7 @@ struct ContentPage: HtmlProducer {
private let icons: Set<PageIcon>
init(language: ContentLanguage, dateString: String, title: String, tags: [FeedEntryData.Tag], linkTitle: String, description: String, navigationBarLinks: [NavigationBar.Link], pageContent: String, headers: [HeaderElement], footers: [String], icons: Set<PageIcon>) {
init(language: ContentLanguage, dateString: String, title: String, tags: [FeedEntryData.Tag], linkTitle: String, description: String, navigationBarLinks: [NavigationBar.Link], pageContent: String, headers: Set<HeaderElement>, footers: [String], icons: Set<PageIcon>) {
self.language = language
self.dateString = dateString
self.title = title
@ -33,7 +33,7 @@ struct ContentPage: HtmlProducer {
self.description = description
self.navigationBarLinks = navigationBarLinks
self.pageContent = pageContent
self.headers = headers
self.headers = headers.union([.title(title), .description(description)]).sorted()
self.footers = footers.joined()
self.icons = icons
}
@ -41,7 +41,7 @@ struct ContentPage: HtmlProducer {
func populate(_ result: inout String) {
// TODO: Add headers and footers from page content
result += "<!DOCTYPE html><html lang=\"\(language.rawValue)\">"
result += PageHead(items: [.charset, .viewport] + headers).content
result += PageHead(items: headers).content
result += "<body>"
result += NavigationBar(links: navigationBarLinks).content

View File

@ -16,19 +16,21 @@ struct GenericPage {
let insertedContent: (inout String) -> Void
init(language: ContentLanguage, title: String, description: String, links: [NavigationBar.Link], headers: [HeaderElement], additionalFooter: String, insertedContent: @escaping (inout String) -> Void) {
init(language: ContentLanguage, title: String, description: String, links: [NavigationBar.Link], headers: Set<HeaderElement>, additionalFooter: String, insertedContent: @escaping (inout String) -> Void) {
self.language = language
self.title = title
self.description = description
self.links = links
self.headers = headers
self.headers = headers.union([.title(title), .description(description)]).sorted()
self.additionalFooter = additionalFooter
self.insertedContent = insertedContent
}
var content: String {
#warning("Consolidate this code with ContentPage")
var result = ""
result += "<!DOCTYPE html><html lang=\"\(language.rawValue)\">"
result += PageHead(items: [.charset, .viewport] + headers).content
result += PageHead(items: headers).content
result += "<body>"
result += NavigationBar(links: links).content
result += "<div class=\"content\"><div style=\"height: 70px;\"></div>"