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()) }