Import old content, load from disk

This commit is contained in:
Christoph Hagen
2024-11-18 20:19:20 +01:00
parent 0989f06d87
commit 943d8d962b
24 changed files with 1326 additions and 210 deletions

View File

@@ -12,23 +12,25 @@ final class Page: ObservableObject {
var isDraft: Bool
@Published
var metadata: [LocalizedPage]
var createdDate: Date
/**
All files which may occur in content but is stored externally.
Missing files which would otherwise produce a warning are ignored when included here.
- Note: This property defaults to an empty set.
*/
@Published
var externalFiles: Set<String> = []
var startDate: Date
/**
Specifies additional files which should be copied to the destination when generating the content.
- Note: This property defaults to an empty set.
*/
@Published
var requiredFiles: Set<String> = []
var hasEndDate: Bool
@Published
var endDate: Date
@Published
var german: LocalizedPage
@Published
var english: LocalizedPage
@Published
var tags: [Tag]
/**
Additional images required by the element.
@@ -38,36 +40,31 @@ final class Page: ObservableObject {
@Published
var images: Set<String> = []
init(id: String, isDraft: Bool, metadata: [LocalizedPage], externalFiles: Set<String> = [], requiredFiles: Set<String> = [], images: Set<String> = []) {
init(id: String,
isDraft: Bool,
createdDate: Date,
startDate: Date,
endDate: Date?,
german: LocalizedPage,
english: LocalizedPage,
tags: [Tag]) {
self.id = id
self.isDraft = isDraft
self.metadata = metadata
self.externalFiles = externalFiles
self.requiredFiles = requiredFiles
self.images = images
self.createdDate = createdDate
self.startDate = startDate
self.hasEndDate = endDate != nil
self.endDate = endDate ?? startDate
self.german = german
self.english = english
self.tags = tags
}
func metadata(for language: ContentLanguage) -> LocalizedPage? {
metadata.first { $0.language == language }
switch language {
case .german: return german
case .english: return english
}
}
}
struct LocalizedPage {
let language: ContentLanguage
/**
The string to use when creating the url for the page.
Defaults to ``id`` if unset.
*/
var urlString: String?
/**
The headline to use when showing the entry on it's own page
*/
var headline: String
}
extension Page: Identifiable {