sciforge_parser/csv/
writer.rs1pub fn write_csv(header: &[&str], rows: &[Vec<String>]) -> String {
2 let mut out = String::new();
3 for (i, h) in header.iter().enumerate() {
4 if i > 0 {
5 out.push(',');
6 }
7 write_field(&mut out, h);
8 }
9 for row in rows {
10 out.push('\n');
11 for (i, field) in row.iter().enumerate() {
12 if i > 0 {
13 out.push(',');
14 }
15 write_field(&mut out, field);
16 }
17 }
18 out
19}
20
21fn write_field(out: &mut String, field: &str) {
22 if field.contains(',') || field.contains('"') || field.contains('\n') {
23 out.push('"');
24 for c in field.chars() {
25 if c == '"' {
26 out.push('"');
27 }
28 out.push(c);
29 }
30 out.push('"');
31 } else {
32 out.push_str(field);
33 }
34}