gitql_cli/printer/
csv_printer.rs1use csv::Writer;
2use gitql_core::object::GitQLObject;
3
4use super::BaseOutputPrinter;
5
6pub struct CSVPrinter;
7
8impl BaseOutputPrinter for CSVPrinter {
9 fn print(&self, object: &mut GitQLObject) {
10 let mut writer = Writer::from_writer(vec![]);
11 let _ = writer.write_record(object.titles.clone());
12 let row_len = object.titles.len();
13 if let Some(group) = object.groups.first() {
14 for row in &group.rows {
15 let mut values_row: Vec<String> = Vec::with_capacity(row_len);
16 for value in &row.values {
17 values_row.push(value.literal());
18 }
19 let _ = writer.write_record(values_row);
20 }
21 }
22
23 if let Ok(writer_content) = writer.into_inner() {
24 println!("{:?}", String::from_utf8(writer_content));
25 }
26 }
27}