
protocol BlockProcessor {

    static var blockId: ContentBlock { get }

    var results: PageGenerationResults { get }

    init(content: Content, results: PageGenerationResults, language: ContentLanguage)

    func process(_ markdown: Substring) -> String
}

extension BlockProcessor {

    func invalid(_ markdown: Substring) {
        results.invalid(block: Self.blockId, markdown)
    }
}
