Initialising...
Edit the Gleam code below to see the hero update.
View types & encoding
import gleam/io
import gleam/json

// === Types ===

pub type Page {
  Page(
    name: String,
    tagline: String,
    links: List(Link),
  )
}

pub type Link {
  Link(label: String, href: String, external: Bool)
}
// === Encoding ===

fn encode_link(link: Link) -> json.Json {
  json.object([
    #("label", json.string(link.label)),
    #("href", json.string(link.href)),
    #("external", json.bool(link.external)),
  ])
}

fn encode_page(p: Page) -> json.Json {
  json.object([
    #("name", json.string(p.name)),
    #("tagline", json.string(p.tagline)),
    #("links", json.array(p.links, encode_link)),
  ])
}

pub fn main() {
  page()
  |> encode_page
  |> json.to_string
  |> io.println
}