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

76 lines
1.7 KiB
Swift

import Foundation
struct ImageToGenerate {
let size: Int
let image: FileResource
}
extension ImageToGenerate: Hashable {
func hash(into hasher: inout Hasher) {
hasher.combine(size)
hasher.combine(image.id)
}
}
final class PageGenerationResults: ObservableObject {
@Published
var linkedPages: Set<Page> = []
@Published
var linkedTags: Set<Tag> = []
@Published
var files: Set<FileResource> = []
@Published
var imagesToGenerate: Set<ImageToGenerate> = []
@Published
var missingPages: Set<String> = []
@Published
var missingFiles: Set<String> = []
@Published
var missingTags: Set<String> = []
@Published
var unknownCommands: [String] = []
@Published
var invalidCommandArguments: [(command: ShorthandMarkdownKey, arguments: [String])] = []
@Published
var requiredHeaders: RequiredHeaders = []
@Published
var requiredFooters: Set<String> = []
func reset() {
linkedPages = []
linkedTags = []
files = []
imagesToGenerate = []
missingPages = []
missingFiles = []
missingTags = []
unknownCommands = []
invalidCommandArguments = []
requiredHeaders = []
requiredFooters = []
}
var convertedWarnings: [PageContentAnomaly] {
var result = [PageContentAnomaly]()
result += missingPages.map { .missingPage($0) }
result += missingFiles.map { .missingFile($0) }
result += unknownCommands.map { .unknownCommand($0) }
result += invalidCommandArguments.map { .invalidCommandArguments(command: $0.command, arguments: $0.arguments) }
return result
}
}