Generate pages, image descriptions

This commit is contained in:
Christoph Hagen
2024-12-06 21:59:36 +01:00
parent 18eb64f289
commit 5fb689ac7c
42 changed files with 1653 additions and 273 deletions

View File

@@ -49,6 +49,9 @@ extension Content {
let storage = Storage(baseFolder: URL(filePath: contentPath))
let settings = try storage.loadSettings()
let imageDescriptions = storage.loadImageDescriptions().reduce(into: [:]) { descriptions, description in
descriptions[description.imageId] = description
}
let tagData = try storage.loadAllTags()
let pagesData = try storage.loadAllPages()
@@ -57,20 +60,20 @@ extension Content {
var images: [String : ImageResource] = [:]
var files: [FileResource] = []
var videos: [String] = []
for (file, url) in filesData {
let ext = file.components(separatedBy: ".").last!.lowercased()
let type = FileType(fileExtension: ext)
switch type {
case .image:
images[file] = ImageResource(uniqueId: file, altText: .init(en: "", de: ""), fileUrl: url)
case .file:
files.append(FileResource(uniqueId: file, description: ""))
case .video:
videos.append(file)
case .resource:
break
if case .image(let type) = type {
let descriptions = imageDescriptions[file]
images[file] = ImageResource(
type: type,
uniqueId: file,
en: descriptions?.english ?? "",
de: descriptions?.german ?? "",
fileUrl: url)
} else {
files.append(FileResource(type: type, uniqueId: file, description: ""))
}
}
@@ -104,7 +107,6 @@ extension Content {
self.pages = pages.values.sorted(ascending: false) { $0.startDate }
self.files = files.sorted { $0.uniqueId }
self.images = images.values.sorted { $0.id }
self.videos = videos
self.posts = posts.sorted(ascending: false) { $0.startDate }
self.settings = makeSettings(settings, tags: tags)
}
@@ -119,10 +121,15 @@ extension Content {
postsPerPage: settings.posts.postsPerPage,
contentWidth: settings.posts.contentWidth)
let pages = PageSettings(
pageUrlPrefix: settings.pages.pageUrlPrefix,
contentWidth: settings.pages.contentWidth)
return Settings(
outputDirectoryPath: settings.outputDirectoryPath,
navigationBar: navigationBar,
posts: posts,
pages: pages,
german: convert(settings.german),
english: convert(settings.english))
}