geam-stdlib 0.2.1

Official Gleam standard-library providers for Geam
Documentation
import gleam/option.{None, Some}
import gleam/uri

pub fn main() {
  assert uri.empty
    == uri.Uri(
      scheme: None,
      userinfo: None,
      host: None,
      port: None,
      path: "",
      query: None,
      fragment: None,
    )

  let assert Ok(full) =
    uri.parse("https://weebl:bob@example.com:1234/path?query=true#fragment")
  assert full
    == uri.Uri(
      scheme: Some("https"),
      userinfo: Some("weebl:bob"),
      host: Some("example.com"),
      port: Some(1234),
      path: "/path",
      query: Some("query=true"),
      fragment: Some("fragment"),
    )

  let assert Ok(empty) = uri.parse("")
  assert empty == uri.empty

  let assert Ok(empty_host) = uri.parse("//:")
  assert empty_host.host == Some("")
  assert empty_host.port == None

  let unicode_source =
    "HTTPS://EXAMPLE.COM/경로/가나다라마바사아자차카타파하/🙂🙂🙂?도시=서울#조각"
  let assert Ok(unicode) = uri.parse(unicode_source)
  assert unicode.scheme == Some("https")
  assert unicode.host == Some("EXAMPLE.COM")
  assert unicode.path == "/경로/가나다라마바사아자차카타파하/🙂🙂🙂"
  assert unicode.query == Some("도시=서울")
  assert unicode.fragment == Some("조각")
  assert uri.to_string(unicode)
    == "https://EXAMPLE.COM/경로/가나다라마바사아자차카타파하/🙂🙂🙂?도시=서울#조각"

  assert uri.parse(":https") == Error(Nil)

  Nil
}
// @geam:expect Nil