///|
pub fn build_sitemap(pages : Array[PagePlan], base_url : String) -> String {
  let base = normalize_base_url(base_url)
  let mut xml = "\n"
  xml = xml + "\n"
  for page in pages {
    xml = xml +
      "  " +
      escape_xml(base + page.route) +
      "\n"
  }
  xml + "\n"
}

///|
fn normalize_base_url(base_url : String) -> String {
  if base_url == "" {
    ""
  } else if base_url.has_suffix("/") {
    base_url[:base_url.length() - 1].to_owned()
  } else {
    base_url
  }
}

///|
fn escape_xml(input : String) -> String {
  input
  .replace_all(old="&", new="&")
  .replace_all(old="<", new="<")
  .replace_all(old=">", new=">")
  .replace_all(old="\"", new=""")
}