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

org.http4k.lens.delegatedProperties.kt Maven / Gradle / Ivy

package org.http4k.lens

import kotlin.properties.ReadOnlyProperty

typealias Prop = ReadOnlyProperty

interface DelegatedPropertyLensSpec {
    fun required(): Prop
    fun optional(): Prop
    fun defaulted(default: OUT): Prop
}

@JvmName("named")
fun > L.of() =
    object : DelegatedPropertyLensSpec, OUT, Lens> {
        override fun required() = Prop { _, p -> [email protected](p.name) }

        override fun optional() = Prop { _, p -> [email protected](p.name) }

        override fun defaulted(default: OUT) = Prop { _, property -> [email protected](property.name, default) }
    }

@JvmName("namedList")
fun >> L.of() =
    object : DelegatedPropertyLensSpec>, List, Lens?>> {
        override fun required() = Prop { _, p -> [email protected](p.name) }

        override fun optional() = Prop { _, p -> [email protected](p.name) }

        override fun defaulted(default: List) = Prop { _, p -> [email protected](p.name, default) }
    }

@JvmName("namedBiDi")
fun > L.of() =
    object : DelegatedPropertyLensSpec, OUT, BiDiLens> {
        override fun required() = Prop { _, p -> [email protected](p.name) }

        override fun optional() = Prop { _, p -> [email protected](p.name) }

        override fun defaulted(default: OUT) = Prop { _, p -> [email protected](p.name, default) }
    }

@JvmName("namedBiDiList")
fun >> L.of() =
    object : DelegatedPropertyLensSpec>, List, BiDiLens?>> {
        override fun required() = Prop { _, p -> [email protected](p.name) }

        override fun optional() = Prop { _, p -> [email protected](p.name) }

        override fun defaulted(default: List) = Prop { _, p -> [email protected](p.name, default) }
    }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy