1.3 KiB
1.3 KiB
import dev.kreuzberg.*
// Generic validator pattern: every IValidator has the same shape.
// `name()` keys the registry, `priority()` orders execution (higher = earlier),
// `should_validate()` is a fast skip-check, and `validate()` throws on failure.
class GenericValidator(
private val pluginName: String,
private val pluginPriority: Int,
private val check: (ExtractionResult, ExtractionConfig) -> Unit,
) : IValidator {
override fun name(): String = pluginName
override fun version(): String = "1.0.0"
override fun initialize() {
// Optional: open resources, load config files, etc.
}
override fun shutdown() {
// Optional: release resources held in initialize().
}
override fun validate(result: ExtractionResult, config: ExtractionConfig) {
check(result, config)
}
override fun should_validate(
_result: ExtractionResult,
_config: ExtractionConfig,
): Boolean = true
override fun priority(): Int = pluginPriority
}
fun registerGenericValidator() {
val validator = GenericValidator(
pluginName = "non-empty-content",
pluginPriority = 200,
) { result, _ ->
require(result.content().isNotBlank()) { "Extracted content is blank" }
}
ValidatorBridge.registerValidator(validator)
}