All Downloads are FREE. Search and download functionalities are using the official Maven repository.

commonMain.io.nacular.doodle.utils.Encoder.kt Maven / Gradle / Ivy

package io.nacular.doodle.utils

import kotlin.Result.Companion.failure
import kotlin.Result.Companion.success

public interface Encoder {
    public fun encode(a: A): Result
    public fun decode(b: B): Result
}

public class PassThroughEncoder: Encoder {
    public override fun encode(a: T): Result = success(a)
    public override fun decode(b: T): Result = success(b)
}

public abstract class ToStringEncoder: Encoder {
    public override fun encode(a: T): Result = success(a.toString())
}

public object ToStringIntEncoder: ToStringEncoder() {
    public override fun decode(b: String): Result = b.toIntOrNull()?.let { success(it) } ?: failure(IllegalArgumentException("Cannot parse: $b"))
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy