gleam-spacetraders-sdk/src/spacetraders_models/ship_component_quality.gleam

29 lines
780 B
Gleam
Raw Permalink Normal View History

2025-06-16 11:43:06 -04:00
import gleam/dynamic/decode.{type Decoder}
2025-06-17 05:04:29 -04:00
import gleam/json.{type Json}
2025-06-16 11:43:06 -04:00
2025-06-17 05:04:29 -04:00
pub opaque type ShipComponentQuality {
ShipComponentQuality(Int)
}
pub fn parse(value: Int) -> Result(ShipComponentQuality, Nil) {
Ok(ShipComponentQuality(value))
}
2025-06-16 11:43:06 -04:00
pub fn decoder() -> Decoder(ShipComponentQuality) {
2025-06-17 05:04:29 -04:00
use value <- decode.then(decode.int)
case parse(value) {
Ok(ship_component_quality) -> decode.success(ship_component_quality)
Error(Nil) ->
decode.failure(ShipComponentQuality(0), "ShipComponentQuality")
}
}
pub fn to_int(ship_component_quality: ShipComponentQuality) -> Int {
let ShipComponentQuality(value) = ship_component_quality
value
}
pub fn encode(ship_component_quality: ShipComponentQuality) -> Json {
json.int(to_int(ship_component_quality))
2025-06-16 11:43:06 -04:00
}