76 lines
1.7 KiB
Swift
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
|
|
}
|
|
}
|