95 lines
2.1 KiB
Swift
95 lines
2.1 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 externalLinks: Set<String> = []
|
|
|
|
@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 invalidCommands: [(command: ShorthandMarkdownKey?, markdown: String)] = []
|
|
|
|
@Published
|
|
var requiredHeaders: Set<KnownHeaderElement> = []
|
|
|
|
@Published
|
|
var requiredFooters: Set<String> = []
|
|
|
|
@Published
|
|
var requiredIcons: Set<PageIcon> = []
|
|
|
|
@Published
|
|
var issues: Set<PageContentAnomaly> = []
|
|
|
|
func reset() {
|
|
linkedPages = []
|
|
linkedTags = []
|
|
externalLinks = []
|
|
files = []
|
|
imagesToGenerate = []
|
|
missingPages = []
|
|
missingFiles = []
|
|
missingTags = []
|
|
invalidCommands = []
|
|
requiredHeaders = []
|
|
requiredFooters = []
|
|
requiredIcons = []
|
|
issues = []
|
|
}
|
|
|
|
func invalid(command: ShorthandMarkdownKey?, _ markdown: Substring) {
|
|
invalidCommands.append((command, String(markdown)))
|
|
issues.insert(.invalidCommand(command: command, markdown: String(markdown)))
|
|
}
|
|
|
|
func missing(page: String, markdown: Substring) {
|
|
missingPages.insert(page)
|
|
issues.insert(.missingPage(page: page, markdown: String(markdown)))
|
|
}
|
|
|
|
func missing(tag: String, markdown: Substring) {
|
|
missingTags.insert(tag)
|
|
issues.insert(.missingTag(tag: tag, markdown: String(markdown)))
|
|
}
|
|
|
|
func missing(file: String, markdown: Substring) {
|
|
missingFiles.insert(file)
|
|
issues.insert(.missingFile(file: file, markdown: String(markdown)))
|
|
}
|
|
}
|