///|
pub fn parse_address_list(value : String) -> Array[Address] {
let chunks = split_char(value, ',')
let out : Array[Address] = []
for chunk in chunks {
let item = parse_address(trim_ascii(chunk))
if item.mailbox != "" {
out.push(item)
}
}
out
}
///|
pub fn parse_address(value : String) -> Address {
let lt = index_of(value, '<')
if lt >= 0 {
let before = trim_ascii(slice(value, 0, lt))
let rest = slice(value, lt + 1, value.length())
let gt = index_of(rest, '>')
let mailbox = if gt >= 0 { slice(rest, 0, gt) } else { rest }
address(normalize_display_name(before), trim_ascii(mailbox))
} else {
address("", trim_ascii(value))
}
}
///|
pub fn format_address(addr : Address) -> String {
if addr.display == "" {
addr.mailbox
} else {
addr.display + " <" + addr.mailbox + ">"
}
}