49 lines
1,018 B
Gleam
49 lines
1,018 B
Gleam
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")
|
|
}
|