Skip to content

Instantly share code, notes, and snippets.

@maxost
maxost / EnumExt.kt
Last active November 2, 2022 10:37
Kotlin: Enum 'contains' and 'valueOf' with default value implementations
inline fun <reified T : Enum<T>> enumContains(name: String): Boolean {
return enumValues<T>().any { it.name == name}
}
inline fun <reified T : Enum<T>> enumValueOf(name: String, defaultValue: T): T {
return try {
enumValues<T>().first { it.name == name }
} catch (e: NoSuchElementException) {
defaultValue
}
@maxost
maxost / WordUtils.kt
Last active November 20, 2023 14:24
Kotlin: Russian word generator for counts
/**
* genitivePlural - родительный падеж, множественное число (примеры: "часов", "минут", "секунд")
* nominativeSingular - именительный падеж, единственное число (примеры: "час", "минута", "секунда")
* genitiveSingular - родительный падеж, единственное число (примеры: "часа", "минуты", "секунды")
*/
fun getCountNoun(count: Int, genitivePlural: String, nominativeSingular: String, genitiveSingular: String): String {
val lastDigit = count.toString().last().toString().toInt()
val word = if (count in 5..20) genitivePlural
else if (lastDigit == 0 || lastDigit >= 5) genitivePlural
else if (lastDigit == 1) nominativeSingular