32 lines
866 B
Swift
32 lines
866 B
Swift
|
|
struct LabelsBlock: OrderedKeyBlockProcessor {
|
|
|
|
typealias Key = PageIcon
|
|
|
|
static let blockId: ContentBlock = .labels
|
|
|
|
let content: Content
|
|
|
|
let results: PageGenerationResults
|
|
|
|
let language: ContentLanguage
|
|
|
|
init(content: Content, results: PageGenerationResults, language: ContentLanguage) {
|
|
self.content = content
|
|
self.results = results
|
|
self.language = language
|
|
}
|
|
|
|
func process(_ arguments: [(key: PageIcon, value: String)], markdown: Substring) -> String {
|
|
let labels: [ContentLabel] = arguments.compactMap { (icon, value) in
|
|
guard value != "" else {
|
|
invalid(markdown)
|
|
return nil
|
|
}
|
|
results.require(icon: icon)
|
|
return .init(icon: icon, value: value)
|
|
}
|
|
return ContentLabels(labels: labels).content
|
|
}
|
|
}
|