gleam-spacetraders-sdk/src/spacetraders_sdk/models/mount_symbol.gleam

73 lines
2.3 KiB
Gleam

import gleam/dynamic/decode.{type Decoder}
import gleam/json.{type Json}
pub type MountSymbol {
MountGasSiphonI
MountGasSiphonII
MountGasSiphonIII
MountSurveyorI
MountSurveyorII
MountSurveyorIII
MountSensorArrayI
MountSensorArrayII
MountSensorArrayIII
MountMiningLaserI
MountMiningLaserII
MountMiningLaserIII
MountLaserCannonI
MountMissileLauncherI
MountTurretI
}
pub fn parse(value: String) -> Result(MountSymbol, Nil) {
case value {
"MOUNT_GAS_SIPHON_I" -> Ok(MountGasSiphonI)
"MOUNT_GAS_SIPHON_II" -> Ok(MountGasSiphonII)
"MOUNT_GAS_SIPHON_III" -> Ok(MountGasSiphonIII)
"MOUNT_SURVEYOR_I" -> Ok(MountSurveyorI)
"MOUNT_SURVEYOR_II" -> Ok(MountSurveyorII)
"MOUNT_SURVEYOR_III" -> Ok(MountSurveyorIII)
"MOUNT_SENSOR_ARRAY_I" -> Ok(MountSensorArrayI)
"MOUNT_SENSOR_ARRAY_II" -> Ok(MountSensorArrayII)
"MOUNT_SENSOR_ARRAY_III" -> Ok(MountSensorArrayIII)
"MOUNT_MINING_LASER_I" -> Ok(MountMiningLaserI)
"MOUNT_MINING_LASER_II" -> Ok(MountMiningLaserII)
"MOUNT_MINING_LASER_III" -> Ok(MountMiningLaserIII)
"MOUNT_LASER_CANNON_I" -> Ok(MountLaserCannonI)
"MOUNT_MISSILE_LAUNCHER_I" -> Ok(MountMissileLauncherI)
"MOUNT_TURRET_I" -> Ok(MountTurretI)
_ -> Error(Nil)
}
}
pub fn decoder() -> Decoder(MountSymbol) {
use value <- decode.then(decode.string)
case parse(value) {
Ok(mount_symbol) -> decode.success(mount_symbol)
Error(Nil) -> decode.failure(MountGasSiphonI, "MountSymbol")
}
}
pub fn to_string(mount_symbol: MountSymbol) -> String {
case mount_symbol {
MountGasSiphonI -> "MOUNT_GAS_SIPHON_I"
MountGasSiphonII -> "MOUNT_GAS_SIPHON_II"
MountGasSiphonIII -> "MOUNT_GAS_SIPHON_III"
MountSurveyorI -> "MOUNT_SURVEYOR_I"
MountSurveyorII -> "MOUNT_SURVEYOR_II"
MountSurveyorIII -> "MOUNT_SURVEYOR_III"
MountSensorArrayI -> "MOUNT_SENSOR_ARRAY_I"
MountSensorArrayII -> "MOUNT_SENSOR_ARRAY_II"
MountSensorArrayIII -> "MOUNT_SENSOR_ARRAY_III"
MountMiningLaserI -> "MOUNT_MINING_LASER_I"
MountMiningLaserII -> "MOUNT_MINING_LASER_II"
MountMiningLaserIII -> "MOUNT_MINING_LASER_III"
MountLaserCannonI -> "MOUNT_LASER_CANNON_I"
MountMissileLauncherI -> "MOUNT_MISSILE_LAUNCHER_I"
MountTurretI -> "MOUNT_TURRET_I"
}
}
pub fn encode(mount_symbol: MountSymbol) -> Json {
json.string(to_string(mount_symbol))
}