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