Skip to main content

kebs-enum / kebs-enumeratum

Enum support modules providing EnumLike / ValueEnumLike instances.

Setup

// Scala 3 native enums + Scala 2 scala.Enumeration
libraryDependencies += "pl.iterators" %% "kebs-enum" % kebsVersion

// Enumeratum (Scala 2 & 3)
libraryDependencies += "pl.iterators" %% "kebs-enumeratum" % kebsVersion

Usage

// Scala 3 native enums
import pl.iterators.kebs.enums.{KebsEnum, KebsValueEnum}

// Scala 2 scala.Enumeration
import pl.iterators.kebs.enums.KebsEnum

// Enumeratum
import pl.iterators.kebs.enumeratum.{KebsEnumeratum, KebsValueEnumeratum}

Note: KebsValueEnum is Scala 3 only. On Scala 2 with Enumeratum, use KebsValueEnumeratum.

Value enums

For value enums, extend entries with ValueEnumLikeEntry:

import pl.iterators.kebs.core.enums.ValueEnumLikeEntry

// Scala 3
enum ColorRGB(val value: Int) extends ValueEnumLikeEntry[Int] {
case Red extends ColorRGB(0xFF0000)
case Green extends ColorRGB(0x00FF00)
case Blue extends ColorRGB(0x0000FF)
}

// Enumeratum — supports Int, Long, Short, Byte, and String value types
sealed abstract class LibraryItem(val value: Int) extends IntEnumEntry with ValueEnumLikeEntry[Int]
object LibraryItem extends IntEnum[LibraryItem] {
case object Book extends LibraryItem(1)
case object Movie extends LibraryItem(2)
val values = findValues
}