///|
fn escape_html(text : String) -> String {
let out = StringBuilder::new()
for ch in text {
match ch {
'&' => out.write_string("&")
'<' => out.write_string("<")
'>' => out.write_string(">")
'"' => out.write_string(""")
'\'' => out.write_string("'")
_ => out.write_char(ch)
}
}
out.to_string()
}
///|
fn slugify(text : String) -> String {
let out = StringBuilder::new()
for ch in text {
if (ch >= 'A' && ch <= 'Z') ||
(ch >= 'a' && ch <= 'z') ||
(ch >= '0' && ch <= '9') {
out.write_char(ch)
} else if ch == ' ' || ch == '-' || ch == '_' {
out.write_char('-')
}
}
out.to_string()
}
///|
fn join_lines(lines : Array[String]) -> String {
lines.join("\n")
}
///|
fn md_list(items : Array[String]) -> String {
items.map(fn(item) { "- \{item}" }).join("\n")
}
///|
fn html_list(items : Array[String]) -> String {
items.map(fn(item) { "\{escape_html(item)}" }).join("")
}