///|
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=""")
}