31 lines
652 B
Gleam
31 lines
652 B
Gleam
import gleam/dynamic/decode.{type Decoder}
|
|
import utils/decode as decode_utils
|
|
|
|
pub type ShipNavStatus {
|
|
InTransit
|
|
InOrbit
|
|
Docked
|
|
}
|
|
|
|
pub fn to_string(ship_nav_status: ShipNavStatus) -> String {
|
|
case ship_nav_status {
|
|
InTransit -> "IN_TRANSIT"
|
|
InOrbit -> "IN_ORBIT"
|
|
Docked -> "DOCKED"
|
|
}
|
|
}
|
|
|
|
pub fn parse(
|
|
ship_nav_status_str: String,
|
|
) -> Result(ShipNavStatus, ShipNavStatus) {
|
|
case ship_nav_status_str {
|
|
"IN_TRANSIT" -> Ok(InTransit)
|
|
"IN_ORBIT" -> Ok(InOrbit)
|
|
"DOCKED" -> Ok(Docked)
|
|
_ -> Error(InTransit)
|
|
}
|
|
}
|
|
|
|
pub fn decoder() -> Decoder(ShipNavStatus) {
|
|
decode_utils.enum_decoder(parse, "ShipNavStatus")
|
|
}
|