import gleam/dynamic/decode.{type Decoder} import utils/decode as decode_utils pub type RefinementProduce { Iron Copper Silver Gold Aluminum Platinum Uranite Meritium Fuel } pub fn to_string(refinement_produce: RefinementProduce) -> String { case refinement_produce { Iron -> "IRON" Copper -> "COPPER" Silver -> "SILVER" Gold -> "GOLD" Aluminum -> "ALUMINUM" Platinum -> "PLATINUM" Uranite -> "URANITE" Meritium -> "MERITIUM" Fuel -> "FUEL" } } pub fn parse( refinement_produce_str: String, ) -> Result(RefinementProduce, RefinementProduce) { case refinement_produce_str { "IRON" -> Ok(Iron) "COPPER" -> Ok(Copper) "SILVER" -> Ok(Silver) "GOLD" -> Ok(Gold) "ALUMINUM" -> Ok(Aluminum) "PLATINUM" -> Ok(Platinum) "URANITE" -> Ok(Uranite) "MERITIUM" -> Ok(Meritium) "FUEL" -> Ok(Fuel) _ -> Error(Iron) } } pub fn decoder() -> Decoder(RefinementProduce) { decode_utils.enum_decoder(parse, "RefinementProduce") }