Files
fil/docs/snippets/swift/plugins/plugin_validator.md
Henrik Jess Nielsen b4c07d3693
All checks were successful
Deploy fil (kreuzberg) / deploy (push) Successful in 49s
Nomad changes
2026-06-01 23:40:55 +02:00

1.2 KiB

import Kreuzberg

final class MinLengthValidator: Validator {
    func name() -> String {
        "min_length"
    }

    func version() -> String {
        "1.0.0"
    }

    func priority() -> Int32 {
        50
    }

    func validate(result: ExtractionResult, config: ExtractionConfig) -> String {
        let contentLength = result.content().count
        if contentLength < 50 {
            let message = "Content too short: \(contentLength)"
            return "{\"err\": \"\(message)\"}"
        }
        return "{\"ok\": null}"
    }

    func shouldValidate(result: ExtractionResult, config: ExtractionConfig) -> Bool {
        true
    }

    func initialize() -> String {
        "{\"ok\": null}"
    }

    func shutdown() -> String {
        "{\"ok\": null}"
    }
}

let validator = MinLengthValidator()
try Kreuzberg.registerValidator(validator)

// Extract a file; the validator runs in-pipeline during extraction
let config = ExtractionConfig(
    useCache: false,
    enableQualityProcessing: false,
    resultFormat: .unified,
    outputFormat: .markdown
)
let result = try extractFileSync(
    path: "document.pdf",
    mimeType: nil,
    config: config
)
print("Content length: \(result.content().count)")