/
GrammaticalGender.kt
38 lines (29 loc) · 963 Bytes
/
GrammaticalGender.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
@file:Suppress("EXPECT_ACTUAL_CLASSIFIERS_ARE_IN_BETA_WARNING")
package org.michaelbel.movies.common.gender
import org.michaelbel.movies.common.SealedString
import org.michaelbel.movies.common.gender.exceptions.InvalidGenderException
actual sealed class GrammaticalGender(
val value: Int
): SealedString {
data object NotSpecified: GrammaticalGender(0)
data object Neutral: GrammaticalGender(1)
data object Feminine: GrammaticalGender(2)
data object Masculine: GrammaticalGender(3)
companion object {
val VALUES = listOf(
NotSpecified,
Neutral,
Feminine,
Masculine
)
fun transform(gender: Int): GrammaticalGender {
return when (gender) {
0 -> NotSpecified
1 -> Neutral
2 -> Feminine
3 -> Masculine
else -> throw InvalidGenderException
}
}
}
}