Skip to content

Instantly share code, notes, and snippets.

@shkschneider
Created March 13, 2019 16:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save shkschneider/460ad8d2cc6dbc19912c0bd9270bea05 to your computer and use it in GitHub Desktop.
Save shkschneider/460ad8d2cc6dbc19912c0bd9270bea05 to your computer and use it in GitHub Desktop.
// <https://github.com/tailwhiper/kotlin-enum-extensions>
inline fun <reified E : Enum<E>> valueOf(name: String, default: E) =
enumValues<E>().find { it.name == name } ?: default
inline fun <reified E : Enum<E>> valueOf(ordinal: Int, default: E) =
enumValues<E>().find { it.ordinal == ordinal } ?: default
inline fun <reified E : Enum<E>> valueOfWithCondition(condition: (E) -> Boolean) =
enumValues<E>().find(condition)
inline fun <reified E : Enum<E>> valueOfWithCondition(condition: (E) -> Boolean, default: E) =
enumValues<E>().find(condition) ?: default
inline fun <reified E : Enum<E>> valueOfIgnoreCase(name: String) =
enumValues<E>().find { it.name.toUpperCase() == name.toUpperCase() }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment