gleam-spacetraders-sdk/src/models/faction_symbol.gleam
Lily Rose cc8edbed02
Some checks are pending
test / test (push) Waiting to run
Add functioning sdk
2025-06-17 01:43:06 +10:00

77 lines
1.5 KiB
Gleam

import gleam/dynamic/decode.{type Decoder}
import utils/decode as decode_utils
pub type FactionSymbol {
Cosmic
Void
Galactic
Quantum
Dominion
Astro
Corsairs
Obsidian
Aegis
United
Solitary
Cobalt
Omega
Echo
Lord
Cult
Ancients
Shadow
Ethereal
}
pub fn to_string(symbol: FactionSymbol) -> String {
case symbol {
Cosmic -> "COSMIC"
Void -> "VOID"
Galactic -> "GALACTIC"
Quantum -> "QUANTUM"
Dominion -> "DOMINION"
Astro -> "ASTRO"
Corsairs -> "CORSAIRS"
Obsidian -> "OBSIDIAN"
Aegis -> "AEGIS"
United -> "UNITED"
Solitary -> "SOLITARY"
Cobalt -> "COBALT"
Omega -> "OMEGA"
Echo -> "ECHO"
Lord -> "LORDS"
Cult -> "CULT"
Ancients -> "ANCIENTS"
Shadow -> "SHADOW"
Ethereal -> "ETHEREAL"
}
}
pub fn parse(symbol_str: String) -> Result(FactionSymbol, FactionSymbol) {
case symbol_str {
"COSMIC" -> Ok(Cosmic)
"VOID" -> Ok(Void)
"GALACTIC" -> Ok(Galactic)
"QUANTUM" -> Ok(Quantum)
"DOMINION" -> Ok(Dominion)
"ASTRO" -> Ok(Astro)
"CORSAIRS" -> Ok(Corsairs)
"OBSIDIAN" -> Ok(Obsidian)
"AEGIS" -> Ok(Aegis)
"UNITED" -> Ok(United)
"SOLITARY" -> Ok(Solitary)
"COBALT" -> Ok(Cobalt)
"OMEGA" -> Ok(Omega)
"ECHO" -> Ok(Echo)
"LORDS" -> Ok(Lord)
"CULT" -> Ok(Cult)
"ANCIENTS" -> Ok(Ancients)
"SHADOW" -> Ok(Shadow)
"ETHEREAL" -> Ok(Ethereal)
_ -> Error(Cosmic)
}
}
pub fn decoder() -> Decoder(FactionSymbol) {
decode_utils.enum_decoder(parse, "FactionSymbol")
}