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

de.lancom.openapi.field.Field.kt Maven / Gradle / Ivy

Go to download

This open-source project provides an OpenAPI 3.0 Parser implemented in Kotlin, utilizing immutable data classes

There is a newer version: 2.1.1
Show newest version
package de.lancom.openapi.field

sealed interface Field {
    val optional: Field

    val isDefined: Boolean

    val orNull: T?

    fun getOrError(): T

    fun getOrElse(default: () -> T): T

    fun orDefault(default: () -> T): Field

    fun orElse(fallback: () -> Field): Field

    fun  map(mapper: (T) -> E): Field

    fun  flatMap(mapper: (T) -> Field): Field

    fun  mapField(mapper: (Field) -> E): Field

    fun takeUnlessField(predicate: (T) -> Boolean): Field {
        return flatMap { value ->
            if (predicate(value)) {
                unset()
            } else {
                this
            }
        }
    }

    companion object {
        fun  unset(): Field {
            return unsetField()
        }

        operator fun  invoke(value: T): Field {
            return setField(value)
        }

        fun  unsetIfNull(value: T?): Field {
            return if (value == null) {
                unset()
            } else {
                Field(value)
            }
        }

        fun  takeUnlessEmpty(value: Map?): Field> {
            return if (value.isNullOrEmpty()) {
                unset()
            } else {
                Field(value)
            }
        }

        fun  takeUnlessEmpty(value: List?): Field> {
            return if (value.isNullOrEmpty()) {
                unset()
            } else {
                Field(value)
            }
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy