///|
pub fn export_entries(
entries : Array[IcdEntry],
delimiter : Delimiter,
) -> String {
let separator = delimiter_char(delimiter).to_string()
let lines = [
"code" +
separator +
"title" +
separator +
"chapter_id" +
separator +
"parent" +
separator +
"excludes" +
separator +
"note",
]
for entry in entries {
let parent = match entry.parent {
Some(value) => value
None => ""
}
let excludes = entry.excludes.join(";")
lines.push(
[entry.code, entry.title, entry.chapter_id, parent, excludes, entry.note]
.map(escape_delimited_field)
.join(separator),
)
}
lines.join("\n") + "\n"
}
///|
fn escape_delimited_field(value : String) -> String {
if value.contains("\"") ||
value.contains(",") ||
value.contains("\t") ||
value.contains("\n") ||
value.contains("\r") {
"\"" + value.replace_all(old="\"", new="\"\"") + "\""
} else {
value
}
}