///|
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
  }
}