45 lines
1.3 KiB
Markdown
45 lines
1.3 KiB
Markdown
```kotlin title="Kotlin"
|
|
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)
|
|
}
|
|
```
|