Current section
Files
Jump to
Current section
Files
src/internal/pokemon/shape/shape.gleam
import decode
import internal/common/affordance.{type Affordance, Affordance, affordance}
import internal/common/name.{type Name, Name, name}
pub type Shape {
Shape(
id: Int,
name: String,
names: List(Name),
awesome_names: List(Name),
pokemon_species: List(Affordance),
)
}
pub fn shape() {
decode.into({
use id <- decode.parameter
use name <- decode.parameter
use names <- decode.parameter
use awesome_names <- decode.parameter
use pokemon_species <- decode.parameter
Shape(id, name, names, awesome_names, pokemon_species)
})
|> decode.field("id", decode.int)
|> decode.field("name", decode.string)
|> decode.field("names", decode.list(of: name()))
|> decode.field("awesome_names", decode.list(of: awesome_name()))
|> decode.field("pokemon_species", decode.list(of: affordance()))
}
fn awesome_name() {
decode.into({
use name <- decode.parameter
use language <- decode.parameter
Name(name, language)
})
|> decode.field("awesome_name", decode.string)
|> decode.field("language", affordance())
}