Files
cli.kt/src/commonMain/kotlin/com/infendro/cli/parser/Parser.kt
2026-01-17 15:57:05 +01:00

25 lines
621 B
Kotlin

package com.infendro.cli.parser
import com.infendro.cli.error.Error
import com.infendro.cli.error.InvalidValue
import kotlin.reflect.KClass
abstract class Parser<T : Any>(
val type: KClass<T>,
) {
sealed class Result<T : Any> {
data class Success<T : Any>(
val value: T,
) : Result<T>()
data class Failure<T : Any>(
val error: Error,
) : Result<T>()
}
protected fun success(value: T) = Result.Success(value)
protected fun failure(text: String) = Result.Failure<T>(InvalidValue(text, type))
abstract fun parse(text: String): Result<T>
}